diff options
Diffstat (limited to 'searchlib/src/tests')
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() |