diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-03-28 22:07:37 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-03-29 13:56:56 +0000 |
commit | d4712740d1281fa3a2fa945dfd3ea4c2182d663c (patch) | |
tree | 1ace22ed894ed094bbb5c1725899124e325781f0 /searchcore/src/tests/proton/matching | |
parent | fef814ec263ce1ceca0416251b3204f43ee3ed30 (diff) |
- Let DotProduct,Wand and WeightedSet be Term nodes in the query tree as they really are.
That restricts the nodes to what they can really do and makes them significantly cheaper.
- In addition type conversion of numeric terms is delayed to when it is necessary.
And as next step they can be avoided completely.
Diffstat (limited to 'searchcore/src/tests/proton/matching')
3 files changed, 19 insertions, 46 deletions
diff --git a/searchcore/src/tests/proton/matching/query_test.cpp b/searchcore/src/tests/proton/matching/query_test.cpp index 7cc11b0dc0c..696b13c4e21 100644 --- a/searchcore/src/tests/proton/matching/query_test.cpp +++ b/searchcore/src/tests/proton/matching/query_test.cpp @@ -898,9 +898,9 @@ void Test::requireThatWeakAndBlueprintsAreCreatedCorrectly() { void Test::requireThatParallelWandBlueprintsAreCreatedCorrectly() { using search::queryeval::WeakAndBlueprint; - ProtonWandTerm wand(field, 42, Weight(100), 123, 9000, 1.25); - wand.append(Node::UP(new ProtonStringTerm("foo", field, 0, Weight(3)))); - wand.append(Node::UP(new ProtonStringTerm("bar", field, 0, Weight(7)))); + ProtonWandTerm wand(2, field, 42, Weight(100), 123, 9000, 1.25); + wand.addTerm("foo", Weight(3)); + wand.addTerm("bar", Weight(7)); ViewResolver viewResolver; ResolveViewVisitor resolve_visitor(viewResolver, attribute_index_env); diff --git a/searchcore/src/tests/proton/matching/querynodes_test.cpp b/searchcore/src/tests/proton/matching/querynodes_test.cpp index 07f4e53bf6d..7795d1563d2 100644 --- a/searchcore/src/tests/proton/matching/querynodes_test.cpp +++ b/searchcore/src/tests/proton/matching/querynodes_test.cpp @@ -518,6 +518,13 @@ TEST("requireThatSimpleIntermediatesGetProperBlending") { TEST_DO(checkProperBlendingWithParent<Rank>()); } +TEST("control query nodes size") { + EXPECT_EQUAL(160u, sizeof(search::query::NumberTerm)); + EXPECT_EQUAL(192u, sizeof(ProtonNodeTypes::NumberTerm)); + EXPECT_EQUAL(160u, sizeof(search::query::StringTerm)); + EXPECT_EQUAL(192u, sizeof(ProtonNodeTypes::StringTerm)); +} + } // namespace TEST_MAIN() { TEST_RUN_ALL(); } diff --git a/searchcore/src/tests/proton/matching/termdataextractor_test.cpp b/searchcore/src/tests/proton/matching/termdataextractor_test.cpp index fb338d409e7..c5da26d9847 100644 --- a/searchcore/src/tests/proton/matching/termdataextractor_test.cpp +++ b/searchcore/src/tests/proton/matching/termdataextractor_test.cpp @@ -39,31 +39,6 @@ namespace search { class AttributeManager; } namespace { -class Test : public vespalib::TestApp { - void requireThatTermsAreAdded(); - void requireThatAViewWithTwoFieldsGivesOneTermDataPerTerm(); - void requireThatUnrankedTermsAreSkipped(); - void requireThatNegativeTermsAreSkipped(); - void requireThatSameElementIsSkipped(); - -public: - int Main() override; -}; - -int -Test::Main() -{ - TEST_INIT("termdataextractor_test"); - - TEST_DO(requireThatTermsAreAdded()); - TEST_DO(requireThatAViewWithTwoFieldsGivesOneTermDataPerTerm()); - TEST_DO(requireThatUnrankedTermsAreSkipped()); - TEST_DO(requireThatNegativeTermsAreSkipped()); - TEST_DO(requireThatSameElementIsSkipped()); - - TEST_DONE(); -} - const string field = "field"; const uint32_t id[] = { 10, 11, 12, 13, 14, 15, 16, 17, 18 }; @@ -77,14 +52,10 @@ Node::UP getQuery(const ViewResolver &resolver) query_builder.addSubstringTerm("baz", field, id[3], Weight(0)); query_builder.addSuffixTerm("qux", field, id[4], Weight(0)); query_builder.addRangeTerm(Range(), field, id[5], Weight(0)); - query_builder.addWeightedSetTerm(1, field, id[6], Weight(0)); - { - // weighted token - query_builder.addStringTerm("bar", field, id[3], Weight(0)); - } + query_builder.addWeightedSetTerm(1, field, id[6], Weight(0)) + .addTerm("bar", Weight(0)); - query_builder.addLocationTerm(Location(Point{10, 10}, 3, 0), - field, id[7], Weight(0)); + query_builder.addLocationTerm(Location(Point{10, 10}, 3, 0), field, id[7], Weight(0)); Node::UP node = query_builder.build(); fef_test::IndexEnvironment index_environment; @@ -98,7 +69,7 @@ Node::UP getQuery(const ViewResolver &resolver) return node; } -void Test::requireThatTermsAreAdded() { +TEST("requireThatTermsAreAdded") { Node::UP node = getQuery(ViewResolver()); vector<const ITermData *> term_data; @@ -110,7 +81,7 @@ void Test::requireThatTermsAreAdded() { } } -void Test::requireThatAViewWithTwoFieldsGivesOneTermDataPerTerm() { +TEST("requireThatAViewWithTwoFieldsGivesOneTermDataPerTerm") { ViewResolver resolver; resolver.add(field, "foo"); resolver.add(field, "bar"); @@ -125,9 +96,7 @@ void Test::requireThatAViewWithTwoFieldsGivesOneTermDataPerTerm() { } } -void -Test::requireThatUnrankedTermsAreSkipped() -{ +TEST("requireThatUnrankedTermsAreSkipped") { QueryBuilder<ProtonNodeTypes> query_builder; query_builder.addAnd(2); query_builder.addStringTerm("term1", field, id[0], Weight(0)); @@ -142,9 +111,7 @@ Test::requireThatUnrankedTermsAreSkipped() EXPECT_EQUAL(id[0], term_data[0]->getUniqueId()); } -void -Test::requireThatNegativeTermsAreSkipped() -{ +TEST("requireThatNegativeTermsAreSkipped") { QueryBuilder<ProtonNodeTypes> query_builder; query_builder.addAnd(2); query_builder.addStringTerm("term1", field, id[0], Weight(0)); @@ -163,8 +130,7 @@ Test::requireThatNegativeTermsAreSkipped() EXPECT_EQUAL(id[1], term_data[1]->getUniqueId()); } -void -Test::requireThatSameElementIsSkipped() +TEST("requireThatSameElementIsSkipped") { QueryBuilder<ProtonNodeTypes> query_builder; query_builder.addAnd(2); @@ -183,4 +149,4 @@ Test::requireThatSameElementIsSkipped() } // namespace -TEST_APPHOOK(Test); +TEST_MAIN() { TEST_RUN_ALL(); }
\ No newline at end of file |