summaryrefslogtreecommitdiffstats
path: root/searchlib/src/tests/diskindex/fusion/fusion_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'searchlib/src/tests/diskindex/fusion/fusion_test.cpp')
-rw-r--r--searchlib/src/tests/diskindex/fusion/fusion_test.cpp84
1 files changed, 51 insertions, 33 deletions
diff --git a/searchlib/src/tests/diskindex/fusion/fusion_test.cpp b/searchlib/src/tests/diskindex/fusion/fusion_test.cpp
index 6e60d14b8ff..8feb7b7e287 100644
--- a/searchlib/src/tests/diskindex/fusion/fusion_test.cpp
+++ b/searchlib/src/tests/diskindex/fusion/fusion_test.cpp
@@ -1,14 +1,20 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include <vespa/searchlib/diskindex/fusion.h>
+#include <vespa/document/fieldvalue/arrayfieldvalue.h>
+#include <vespa/document/fieldvalue/document.h>
+#include <vespa/document/fieldvalue/stringfieldvalue.h>
+#include <vespa/document/fieldvalue/weightedsetfieldvalue.h>
+#include <vespa/document/repo/configbuilder.h>
#include <vespa/searchlib/common/flush_token.h>
#include <vespa/searchlib/diskindex/diskindex.h>
-#include <vespa/searchlib/diskindex/fusion.h>
#include <vespa/searchlib/diskindex/indexbuilder.h>
#include <vespa/searchlib/diskindex/zcposoccrandread.h>
#include <vespa/searchlib/fef/fieldpositionsiterator.h>
#include <vespa/searchlib/fef/termfieldmatchdata.h>
-#include <vespa/searchlib/index/docbuilder.h>
+#include <vespa/searchlib/index/empty_doc_builder.h>
#include <vespa/searchlib/index/dummyfileheadercontext.h>
+#include <vespa/searchlib/index/string_field_builder.h>
#include <vespa/searchlib/index/schemautil.h>
#include <vespa/searchlib/memoryindex/document_inverter.h>
#include <vespa/searchlib/memoryindex/document_inverter_context.h>
@@ -31,7 +37,10 @@ LOG_SETUP("fusion_test");
namespace search {
+using document::ArrayFieldValue;
using document::Document;
+using document::StringFieldValue;
+using document::WeightedSetFieldValue;
using fef::FieldPositionsIterator;
using fef::TermFieldMatchData;
using fef::TermFieldMatchDataArray;
@@ -110,26 +119,20 @@ toString(FieldPositionsIterator posItr, bool hasElements = false, bool hasWeight
}
std::unique_ptr<Document>
-make_doc10(DocBuilder &b)
+make_doc10(EmptyDocBuilder &b)
{
- b.startDocument("id:ns:searchdocument::10");
- b.startIndexField("f0").
- addStr("a").addStr("b").addStr("c").addStr("d").
- addStr("e").addStr("f").addStr("z").
- endField();
- b.startIndexField("f1").
- addStr("w").addStr("x").
- addStr("y").addStr("z").
- endField();
- b.startIndexField("f2").
- startElement(4).addStr("ax").addStr("ay").addStr("z").endElement().
- startElement(5).addStr("ax").endElement().
- endField();
- b.startIndexField("f3").
- startElement(4).addStr("wx").addStr("z").endElement().
- endField();
-
- return b.endDocument();
+ auto doc = b.make_document("id:ns:searchdocument::10");
+ StringFieldBuilder sfb(b);
+ doc->setValue("f0", sfb.tokenize("a b c d e f z").build());
+ doc->setValue("f1", sfb.tokenize("w x y z").build());
+ ArrayFieldValue string_array(b.get_data_type("Array<String>"));
+ string_array.add(sfb.tokenize("ax ay z").build());
+ string_array.add(sfb.tokenize("ax").build());
+ doc->setValue("f2", string_array);
+ WeightedSetFieldValue string_wset(b.get_data_type("WeightedSet<String>"));
+ string_wset.add(sfb.tokenize("wx z").build(), 4);
+ doc->setValue("f3", string_wset);
+ return doc;
}
Schema::IndexField
@@ -151,6 +154,18 @@ make_schema(bool interleaved_features)
return schema;
}
+EmptyDocBuilder::AddFieldsType
+make_add_fields()
+{
+ return [](auto& header) { using namespace document::config_builder;
+ using DataType = document::DataType;
+ header.addField("f0", DataType::T_STRING)
+ .addField("f1", DataType::T_STRING)
+ .addField("f2", Array(DataType::T_STRING))
+ .addField("f3", Wset(DataType::T_STRING));
+ };
+}
+
void
assert_interleaved_features(DiskIndex &d, const vespalib::string &field, const vespalib::string &term, uint32_t doc_id, uint32_t exp_num_occs, uint32_t exp_field_length)
{
@@ -327,7 +342,8 @@ FusionTest::requireThatFusionIsWorking(const vespalib::string &prefix, bool dire
addField("f2").addField("f3").
addField("f4"));
FieldIndexCollection fic(schema, MockFieldLengthInspector());
- DocBuilder b(schema);
+ EmptyDocBuilder b(make_add_fields());
+ StringFieldBuilder sfb(b);
auto invertThreads = SequencedTaskExecutor::create(invert_executor, 2);
auto pushThreads = SequencedTaskExecutor::create(push_executor, 2);
DocumentInverterContext inv_context(schema, *invertThreads, *pushThreads, fic);
@@ -338,19 +354,21 @@ FusionTest::requireThatFusionIsWorking(const vespalib::string &prefix, bool dire
inv.invertDocument(10, *doc, {});
myPushDocument(inv);
- b.startDocument("id:ns:searchdocument::11").
- startIndexField("f3").
- startElement(-27).addStr("zz").endElement().
- endField();
- doc = b.endDocument();
+ doc = b.make_document("id:ns:searchdocument::11");
+ {
+ WeightedSetFieldValue string_wset(b.get_data_type("WeightedSet<String>"));
+ string_wset.add(sfb.word("zz").build(), -27);
+ doc->setValue("f3", string_wset);
+ }
inv.invertDocument(11, *doc, {});
myPushDocument(inv);
- b.startDocument("id:ns:searchdocument::12").
- startIndexField("f3").
- startElement(0).addStr("zz0").endElement().
- endField();
- doc = b.endDocument();
+ doc = b.make_document("id:ns:searchdocument::12");
+ {
+ WeightedSetFieldValue string_wset(b.get_data_type("WeightedSet<String>"));
+ string_wset.add(sfb.word("zz0").build(), 0);
+ doc->setValue("f3", string_wset);
+ }
inv.invertDocument(12, *doc, {});
myPushDocument(inv);
@@ -468,7 +486,7 @@ FusionTest::make_simple_index(const vespalib::string &dump_dir, const IFieldLeng
FieldIndexCollection fic(_schema, field_length_inspector);
uint32_t numDocs = 20;
uint32_t numWords = 1000;
- DocBuilder b(_schema);
+ EmptyDocBuilder b(make_add_fields());
auto invertThreads = SequencedTaskExecutor::create(invert_executor, 2);
auto pushThreads = SequencedTaskExecutor::create(push_executor, 2);
DocumentInverterContext inv_context(_schema, *invertThreads, *pushThreads, fic);