summaryrefslogtreecommitdiffstats
path: root/searchcore
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-09-13 05:21:11 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2022-09-13 05:21:11 +0000
commitaef768cb4e1abd4fc9dc2ef44e8778ea72c73fcd (patch)
treea88d6dd5f78f657ae800c8ddfa01098bef2f9323 /searchcore
parentcf494ca75f3dc3bd66ef90a8438a20a5dd447452 (diff)
Disable splitting of same-element until we can also handle that with matched-elements-only.
Diffstat (limited to 'searchcore')
-rw-r--r--searchcore/src/tests/proton/matching/unpacking_iterators_optimizer/unpacking_iterators_optimizer_test.cpp106
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/unpacking_iterators_optimizer.cpp4
2 files changed, 52 insertions, 58 deletions
diff --git a/searchcore/src/tests/proton/matching/unpacking_iterators_optimizer/unpacking_iterators_optimizer_test.cpp b/searchcore/src/tests/proton/matching/unpacking_iterators_optimizer/unpacking_iterators_optimizer_test.cpp
index bd26323deb4..62983820fcb 100644
--- a/searchcore/src/tests/proton/matching/unpacking_iterators_optimizer/unpacking_iterators_optimizer_test.cpp
+++ b/searchcore/src/tests/proton/matching/unpacking_iterators_optimizer/unpacking_iterators_optimizer_test.cpp
@@ -124,8 +124,14 @@ Node::UP make_query_tree() {
builder.addOr(3);
builder.addStringTerm("t2", view, id, weight);
add_phrase(builder);
+#if ENABLE_SAME_ELEMENT_SPLIT
+ //TODO Enable once matched-elements-only and artifiscial terms are handled
add_same_element(builder);
add_same_element(builder);
+#else
+ builder.addStringTerm("x1", view, id, weight);
+ builder.addStringTerm("x2", view, id, weight);
+#endif
add_phrase(builder);
builder.addStringTerm("t1", view, id, weight);
return builder.build();
@@ -139,12 +145,6 @@ std::string plain_phrase_dump =
" Term b\n"
" Term c\n";
-std::string delayed_phrase_dump =
- "Phrase 3 expensive\n"
- " Term a\n"
- " Term b\n"
- " Term c\n";
-
std::string split_phrase_dump =
"And 4\n"
" Phrase 3 expensive\n"
@@ -162,11 +162,6 @@ std::string plain_same_element_dump =
" Term x\n"
" Term y\n";
-std::string delayed_same_element_dump =
- "SameElement 2 expensive\n"
- " Term x\n"
- " Term y\n";
-
std::string split_same_element_dump =
"And 3\n"
" SameElement 2 expensive\n"
@@ -177,6 +172,7 @@ std::string split_same_element_dump =
//-----------------------------------------------------------------------------
+#if ENABLE_SAME_ELEMENT_SPLIT
std::string plain_query_tree_dump =
"And 4\n"
" Or 3\n"
@@ -196,27 +192,25 @@ std::string plain_query_tree_dump =
" Term b\n"
" Term c\n"
" Term t1\n";
-
-std::string delayed_query_tree_dump =
- "And 4\n"
- " Or 3\n"
- " Term t2\n"
- " Phrase 3 expensive\n"
- " Term a\n"
- " Term b\n"
- " Term c\n"
- " SameElement 2 expensive\n"
- " Term x\n"
- " Term y\n"
- " SameElement 2 expensive\n"
- " Term x\n"
- " Term y\n"
- " Phrase 3 expensive\n"
- " Term a\n"
- " Term b\n"
- " Term c\n"
- " Term t1\n";
-
+#else
+std::string plain_query_tree_dump =
+ "And 4\n"
+ " Or 3\n"
+ " Term t2\n"
+ " Phrase 3\n"
+ " Term a\n"
+ " Term b\n"
+ " Term c\n"
+ " Term x1\n"
+ " Term x2\n"
+ " Phrase 3\n"
+ " Term a\n"
+ " Term b\n"
+ " Term c\n"
+ " Term t1\n";
+#endif
+
+#if ENABLE_SAME_ELEMENT_SPLIT
std::string split_query_tree_dump =
"And 9\n"
" Or 3\n"
@@ -241,31 +235,26 @@ std::string split_query_tree_dump =
" Term a cheap\n"
" Term b cheap\n"
" Term c cheap\n";
-
-std::string delayed_split_query_tree_dump =
- "And 9\n"
- " Or 3\n"
- " Term t2\n"
- " Phrase 3 expensive\n"
- " Term a\n"
- " Term b\n"
- " Term c\n"
- " SameElement 2 expensive\n"
- " Term x\n"
- " Term y\n"
- " SameElement 2 expensive\n"
- " Term x\n"
- " Term y\n"
- " Phrase 3 expensive\n"
- " Term a\n"
- " Term b\n"
- " Term c\n"
- " Term t1\n"
- " Term x cheap\n"
- " Term y cheap\n"
- " Term a cheap\n"
- " Term b cheap\n"
- " Term c cheap\n";
+#else
+std::string split_query_tree_dump =
+ "And 7\n"
+ " Or 3\n"
+ " Term t2\n"
+ " Phrase 3\n"
+ " Term a\n"
+ " Term b\n"
+ " Term c\n"
+ " Term x1\n"
+ " Term x2\n"
+ " Phrase 3 expensive\n"
+ " Term a\n"
+ " Term b\n"
+ " Term c\n"
+ " Term t1\n"
+ " Term a cheap\n"
+ " Term b cheap\n"
+ " Term c cheap\n";
+#endif
//-----------------------------------------------------------------------------
@@ -301,11 +290,14 @@ TEST(UnpackingIteratorsOptimizerTest, require_that_root_same_element_node_can_be
EXPECT_EQ(actual3, expect);
}
+#if ENABLE_SAME_ELEMENT_SPLIT
+//TODO Enable once matched-elements-only and artifiscial terms are handled
TEST(UnpackingIteratorsOptimizerTest, require_that_root_same_element_node_can_be_split) {
std::string actual1 = dump_query(*optimize(make_same_element(), true, true));
std::string expect = split_same_element_dump;
EXPECT_EQ(actual1, expect);
}
+#endif
//-----------------------------------------------------------------------------
diff --git a/searchcore/src/vespa/searchcore/proton/matching/unpacking_iterators_optimizer.cpp b/searchcore/src/vespa/searchcore/proton/matching/unpacking_iterators_optimizer.cpp
index e3ab2c9faa8..d8545f1263c 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/unpacking_iterators_optimizer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/unpacking_iterators_optimizer.cpp
@@ -43,7 +43,9 @@ struct TermExpander : QueryVisitor {
void visit(ONear &) override {}
void visit(Or &) override {}
void visit(Phrase &n) override { expand(n); }
- void visit(SameElement &n) override { expand(n); }
+ void visit(SameElement &) override {
+ // TODO expand(n) once we figure out to handle artificial terms in matched-elements-only;
+ }
void visit(PrefixTerm &) override {}
void visit(RangeTerm &) override {}
void visit(Rank &) override {}