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/src/main | |
parent | 59707e415eedbf630d5eda986545909e36ceb404 (diff) |
A single element under sameElement operator can be pulled out to avoid the sameElement operator.
Diffstat (limited to 'container-search/src/main')
-rw-r--r-- | container-search/src/main/java/com/yahoo/prelude/query/QueryCanonicalizer.java | 11 |
1 files changed, 9 insertions, 2 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(); |