summaryrefslogtreecommitdiffstats
path: root/searchlib/src/tests
diff options
context:
space:
mode:
Diffstat (limited to 'searchlib/src/tests')
-rw-r--r--searchlib/src/tests/diskindex/fusion/fusion_test.cpp14
-rw-r--r--searchlib/src/tests/index/field_length_calculator/field_length_calculator_test.cpp8
-rw-r--r--searchlib/src/tests/memoryindex/field_index/field_index_test.cpp12
-rw-r--r--searchlib/src/tests/memoryindex/memory_index/memory_index_test.cpp36
4 files changed, 57 insertions, 13 deletions
diff --git a/searchlib/src/tests/diskindex/fusion/fusion_test.cpp b/searchlib/src/tests/diskindex/fusion/fusion_test.cpp
index 339e196c9bf..694af2f1ad1 100644
--- a/searchlib/src/tests/diskindex/fusion/fusion_test.cpp
+++ b/searchlib/src/tests/diskindex/fusion/fusion_test.cpp
@@ -1,8 +1,5 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/vespalib/btree/btreenode.hpp>
-#include <vespa/vespalib/btree/btreenodeallocator.hpp>
-#include <vespa/vespalib/btree/btreeroot.hpp>
#include <vespa/searchlib/common/sequencedtaskexecutor.h>
#include <vespa/searchlib/diskindex/diskindex.h>
#include <vespa/searchlib/diskindex/fusion.h>
@@ -15,9 +12,13 @@
#include <vespa/searchlib/memoryindex/document_inverter.h>
#include <vespa/searchlib/memoryindex/field_index_collection.h>
#include <vespa/searchlib/memoryindex/posting_iterator.h>
+#include <vespa/searchlib/test/index/mock_field_length_inspector.h>
#include <vespa/searchlib/util/filekit.h>
-#include <vespa/vespalib/util/threadstackexecutor.h>
+#include <vespa/vespalib/btree/btreenode.hpp>
+#include <vespa/vespalib/btree/btreenodeallocator.hpp>
+#include <vespa/vespalib/btree/btreeroot.hpp>
#include <vespa/vespalib/testkit/testapp.h>
+#include <vespa/vespalib/util/threadstackexecutor.h>
#include <vespa/log/log.h>
LOG_SETUP("fusion_test");
@@ -28,12 +29,13 @@ using document::Document;
using fef::FieldPositionsIterator;
using fef::TermFieldMatchData;
using fef::TermFieldMatchDataArray;
-using memoryindex::FieldIndexCollection;
using memoryindex::DocumentInverter;
+using memoryindex::FieldIndexCollection;
using queryeval::SearchIterator;
using search::common::FileHeaderContext;
using search::index::schema::CollectionType;
using search::index::schema::DataType;
+using search::index::test::MockFieldLengthInspector;
using namespace index;
@@ -268,7 +270,7 @@ Test::requireThatFusionIsWorking(const vespalib::string &prefix, bool directio,
addField("f0").addField("f1").
addField("f2").addField("f3").
addField("f4"));
- FieldIndexCollection fic(schema);
+ FieldIndexCollection fic(schema, MockFieldLengthInspector());
DocBuilder b(schema);
SequencedTaskExecutor invertThreads(2);
SequencedTaskExecutor pushThreads(2);
diff --git a/searchlib/src/tests/index/field_length_calculator/field_length_calculator_test.cpp b/searchlib/src/tests/index/field_length_calculator/field_length_calculator_test.cpp
index c99d241cbc0..8ec1655e372 100644
--- a/searchlib/src/tests/index/field_length_calculator/field_length_calculator_test.cpp
+++ b/searchlib/src/tests/index/field_length_calculator/field_length_calculator_test.cpp
@@ -63,6 +63,14 @@ TEST(FieldLengthCalculatorTest, average_until_max_num_samples)
EXPECT_EQ(max_num_samples, calc.get_num_samples());
}
+TEST(FieldLengthCalculatorTest, calculator_can_return_info_object)
+{
+ FieldLengthCalculator calc(3, 5);
+ auto info = calc.get_info();
+ EXPECT_EQ(3, info.get_average_field_length());
+ EXPECT_EQ(5, info.get_num_samples());
+}
+
}
GTEST_MAIN_RUN_ALL_TESTS()
diff --git a/searchlib/src/tests/memoryindex/field_index/field_index_test.cpp b/searchlib/src/tests/memoryindex/field_index/field_index_test.cpp
index 95861643f84..234cf9b5e84 100644
--- a/searchlib/src/tests/memoryindex/field_index/field_index_test.cpp
+++ b/searchlib/src/tests/memoryindex/field_index/field_index_test.cpp
@@ -1,7 +1,5 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/vespalib/btree/btreenodeallocator.hpp>
-#include <vespa/vespalib/btree/btreeroot.hpp>
#include <vespa/searchlib/common/sequencedtaskexecutor.h>
#include <vespa/searchlib/diskindex/fusion.h>
#include <vespa/searchlib/diskindex/indexbuilder.h>
@@ -16,7 +14,10 @@
#include <vespa/searchlib/memoryindex/field_inverter.h>
#include <vespa/searchlib/memoryindex/ordered_field_index_inserter.h>
#include <vespa/searchlib/memoryindex/posting_iterator.h>
+#include <vespa/searchlib/test/index/mock_field_length_inspector.h>
#include <vespa/searchlib/test/memoryindex/wrap_inserter.h>
+#include <vespa/vespalib/btree/btreenodeallocator.hpp>
+#include <vespa/vespalib/btree/btreeroot.hpp>
#include <vespa/vespalib/gtest/gtest.h>
#include <vespa/log/log.h>
@@ -33,6 +34,7 @@ using document::Document;
using queryeval::SearchIterator;
using search::index::schema::CollectionType;
using search::index::schema::DataType;
+using search::index::test::MockFieldLengthInspector;
using vespalib::GenerationHandler;
namespace memoryindex {
@@ -294,7 +296,7 @@ public:
MyInserter(const Schema &schema)
: _wordStoreScan(),
_mock(),
- _fieldIndexes(schema),
+ _fieldIndexes(schema, MockFieldLengthInspector()),
_features(),
_inserter(nullptr)
{
@@ -490,7 +492,7 @@ struct FieldIndexCollectionTest : public ::testing::Test {
FieldIndexCollection fic;
FieldIndexCollectionTest()
: schema(make_multi_field_schema()),
- fic(schema)
+ fic(schema, MockFieldLengthInspector())
{
}
~FieldIndexCollectionTest() {}
@@ -755,7 +757,7 @@ public:
InverterTest(const Schema& schema)
: _schema(schema),
- _fic(_schema),
+ _fic(_schema, MockFieldLengthInspector()),
_b(_schema),
_invertThreads(2),
_pushThreads(2),
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()