summaryrefslogtreecommitdiffstats
path: root/searchlib/src/tests/memoryindex/memory_index/memory_index_test.cpp
diff options
context:
space:
mode:
authorGeir Storli <geirst@verizonmedia.com>2019-06-06 11:50:01 +0000
committerGeir Storli <geirst@verizonmedia.com>2019-06-06 12:31:24 +0000
commitbc3e355ded5f6403607c0e1b15fe5543d68c093e (patch)
tree7d96c2d76038399eac80305869db98ccb8f43d4a /searchlib/src/tests/memoryindex/memory_index/memory_index_test.cpp
parent7b629efc2f963558e663615bc5e63d7d59624cae (diff)
Extend MemoryIndex to take an instance of IFieldLengthInspector to setup field length calculators per field index.
Diffstat (limited to 'searchlib/src/tests/memoryindex/memory_index/memory_index_test.cpp')
-rw-r--r--searchlib/src/tests/memoryindex/memory_index/memory_index_test.cpp36
1 files changed, 34 insertions, 2 deletions
diff --git a/searchlib/src/tests/memoryindex/memory_index/memory_index_test.cpp b/searchlib/src/tests/memoryindex/memory_index/memory_index_test.cpp
index 4695f0e6e00..dd4bb2cef7f 100644
--- a/searchlib/src/tests/memoryindex/memory_index/memory_index_test.cpp
+++ b/searchlib/src/tests/memoryindex/memory_index/memory_index_test.cpp
@@ -6,6 +6,7 @@
#include <vespa/searchlib/fef/matchdatalayout.h>
#include <vespa/searchlib/fef/termfieldmatchdata.h>
#include <vespa/searchlib/index/docbuilder.h>
+#include <vespa/searchlib/index/i_field_length_inspector.h>
#include <vespa/searchlib/memoryindex/memory_index.h>
#include <vespa/searchlib/query/tree/simplequery.h>
#include <vespa/searchlib/queryeval/booleanmatchiteratorwrapper.h>
@@ -24,6 +25,8 @@ using document::Document;
using document::FieldValue;
using search::ScheduleTaskCallback;
using search::index::schema::DataType;
+using search::index::FieldLengthInfo;
+using search::index::IFieldLengthInspector;
using vespalib::makeLambdaTask;
using search::query::Node;
using search::query::SimplePhrase;
@@ -35,12 +38,25 @@ using namespace search::queryeval;
//-----------------------------------------------------------------------------
-struct MySetup {
+struct MySetup : public IFieldLengthInspector {
Schema schema;
+ std::map<vespalib::string, FieldLengthInfo> field_lengths;
MySetup &field(const std::string &name) {
schema.addIndexField(Schema::IndexField(name, DataType::STRING));
return *this;
}
+ MySetup& field_length(const vespalib::string& field_name, const FieldLengthInfo& info) {
+ field_lengths[field_name] = info;
+ return *this;
+ }
+ FieldLengthInfo get_field_length_info(const vespalib::string& field_name) const override {
+ auto itr = field_lengths.find(field_name);
+ if (itr != field_lengths.end()) {
+ return itr->second;
+ }
+ return FieldLengthInfo();
+ }
+
};
//-----------------------------------------------------------------------------
@@ -109,7 +125,7 @@ Index::Index(const MySetup &setup)
_executor(1, 128 * 1024),
_invertThreads(2),
_pushThreads(2),
- index(schema, _invertThreads, _pushThreads),
+ index(schema, setup, _invertThreads, _pushThreads),
builder(schema),
docid(1),
currentField()
@@ -445,4 +461,20 @@ TEST(MemoryIndexTest, require_that_we_can_fake_bit_vector)
}
}
+TEST(MemoryIndexTest, field_length_info_can_be_retrieved_per_field)
+{
+ Index index(MySetup().field(title).field(body)
+ .field_length("title", FieldLengthInfo(3, 5))
+ .field_length("body", FieldLengthInfo(7, 11)));
+
+ EXPECT_EQ(3, index.index.get_field_length_info("title").get_average_field_length());
+ EXPECT_EQ(5, index.index.get_field_length_info("title").get_num_samples());
+
+ EXPECT_EQ(7, index.index.get_field_length_info("body").get_average_field_length());
+ EXPECT_EQ(11, index.index.get_field_length_info("body").get_num_samples());
+
+ EXPECT_EQ(0, index.index.get_field_length_info("na").get_average_field_length());
+ EXPECT_EQ(0, index.index.get_field_length_info("na").get_num_samples());
+}
+
GTEST_MAIN_RUN_ALL_TESTS()