summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/QueryCanonicalizer.java11
-rw-r--r--container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java2
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