diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2019-06-27 20:21:21 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2019-06-27 20:21:21 +0200 |
commit | aeb03fa326aafd0f92f3a18e4b04846823af3d4f (patch) | |
tree | d378013688f7751f65234953cee3524a8d91a87d /container-search | |
parent | 59707e415eedbf630d5eda986545909e36ceb404 (diff) |
A single element under sameElement operator can be pulled out to avoid the sameElement operator.
Diffstat (limited to 'container-search')
-rw-r--r-- | container-search/src/main/java/com/yahoo/prelude/query/QueryCanonicalizer.java | 11 | ||||
-rw-r--r-- | container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java | 2 |
2 files changed, 10 insertions, 3 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/QueryCanonicalizer.java b/container-search/src/main/java/com/yahoo/prelude/query/QueryCanonicalizer.java index 31e69e5b7cd..2fbda1a9c32 100644 --- a/container-search/src/main/java/com/yahoo/prelude/query/QueryCanonicalizer.java +++ b/container-search/src/main/java/com/yahoo/prelude/query/QueryCanonicalizer.java @@ -83,9 +83,16 @@ public class QueryCanonicalizer { parentIterator.remove(); if (composite.getItemCount() == 1 && ! (composite instanceof NonReducibleCompositeItem)) { + Item child = composite.getItem(0); if (composite instanceof PhraseItem || composite instanceof PhraseSegmentItem) - composite.getItem(0).setWeight(composite.getWeight()); - parentIterator.set(composite.getItem(0)); + child.setWeight(composite.getWeight()); + parentIterator.set(child); + } + if ((composite.getItemCount() == 1) && (composite instanceof SameElementItem)) { + SameElementItem sameElement = (SameElementItem) composite; + WordItem child = (WordItem) sameElement.getItem(0); + child.setIndexName(sameElement.getFieldName() + "." + child.getIndexName()); + parentIterator.set(child); } return CanonicalizationResult.success(); diff --git a/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java b/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java index 70d50b23bed..00a17f963c6 100644 --- a/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java @@ -303,7 +303,7 @@ public class YqlParserTestCase { assertCanonicalParse("select foo from bar where baz contains sameElement(key contains \"a\", value.f2 = 10);", "baz:{key:a value.f2:10}"); assertCanonicalParse("select foo from bar where baz contains sameElement(key contains \"a\");", - "baz:{key:a}"); + "baz.key:a"); } @Test |