diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2018-06-04 17:02:49 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2018-06-04 17:02:49 +0200 |
commit | 64e0257ab43a3d6fb1ebd7ec80037dc9ffc8f2ca (patch) | |
tree | 91d721083a64aa9c4004a080dc605cfad6aaaa3a /container-search | |
parent | 2dbe8f32f9ff6c6ebaf8b07afea2b352ad5bc7b6 (diff) |
No longer needed to prefix children of sameelement as backend now handles it as it should.
Diffstat (limited to 'container-search')
3 files changed, 6 insertions, 33 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/SameElementItem.java b/container-search/src/main/java/com/yahoo/prelude/query/SameElementItem.java index 3d596cc7d34..01dfc508409 100644 --- a/container-search/src/main/java/com/yahoo/prelude/query/SameElementItem.java +++ b/container-search/src/main/java/com/yahoo/prelude/query/SameElementItem.java @@ -37,7 +37,7 @@ public class SameElementItem extends CompositeItem { buffer.append('{'); for (Iterator<Item> i = getItemIterator(); i.hasNext();) { TermItem term = (TermItem) i.next(); - buffer.append(extractSubFieldName(term)).append(':').append(term.getIndexedString()); + buffer.append(term.getIndexName()).append(':').append(term.getIndexedString()); if (i.hasNext()) { buffer.append(' '); } @@ -47,36 +47,13 @@ public class SameElementItem extends CompositeItem { @Override protected void adding(Item item) { + super.adding(item); Validator.ensureInstanceOf("Child item", item, TermItem.class); TermItem asTerm = (TermItem) item; Validator.ensureNonEmpty("Struct fieldname", asTerm.getIndexName()); Validator.ensureNonEmpty("Query term", asTerm.getIndexedString()); - Validator.ensure("Struct fieldname starts with '" + getFieldName() + ".'", - !asTerm.getIndexName().startsWith(fieldName+".") || (item.getParent() != null)); - super.adding(item); - } - - private void expandChild(Item item) { - item.setIndexName(fieldName + '.' + ((TermItem)item).getIndexName()); - } - @Override - public void addItem(int index, Item item) { - super.addItem(index, item); - expandChild(item); } - @Override - public void addItem(Item item) { - super.addItem(item); - expandChild(item); - } - - @Override - public Item setItem(int index, Item item) { - Item prev = super.setItem(index, item); - expandChild(item); - return prev; - } @Override public ItemType getItemType() { @@ -88,7 +65,4 @@ public class SameElementItem extends CompositeItem { return getItemType().toString(); } public String getFieldName() { return fieldName; } - public String extractSubFieldName(TermItem full) { - return full.getIndexName().substring(getFieldName().length()+1); - } } diff --git a/container-search/src/main/java/com/yahoo/search/yql/VespaSerializer.java b/container-search/src/main/java/com/yahoo/search/yql/VespaSerializer.java index 12aec81a5f8..075df0413b7 100644 --- a/container-search/src/main/java/com/yahoo/search/yql/VespaSerializer.java +++ b/container-search/src/main/java/com/yahoo/search/yql/VespaSerializer.java @@ -607,9 +607,7 @@ public class VespaSerializer { } Item current = sameElement.getItem(i); if (current instanceof WordItem) { - WordItem modified = (WordItem)current.clone(); - modified.setIndexName(sameElement.extractSubFieldName(modified)); - new WordSerializer().serialize(destination, modified); + new WordSerializer().serialize(destination, current); } else { throw new IllegalArgumentException( "Serializing of " + current.getClass().getSimpleName() diff --git a/container-search/src/test/java/com/yahoo/prelude/query/test/SameElementItemTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/test/SameElementItemTestCase.java index 0e4b994fe99..e90eb30ed16 100644 --- a/container-search/src/test/java/com/yahoo/prelude/query/test/SameElementItemTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/query/test/SameElementItemTestCase.java @@ -39,11 +39,12 @@ public class SameElementItemTestCase { s.addItem(new WordItem("c", "structaf2")); assertEquals("structa:{f1:b structaf2:c}", s.toString()); } - @Test(expected = IllegalArgumentException.class) - public void requireNoChildrenHasCommonPrefixWithDot() { + @Test + public void requireChildrenCanHavePrefixCommonWithParent() { SameElementItem s = new SameElementItem("structa"); s.addItem(new WordItem("b", "f1")); s.addItem(new WordItem("c", "structa.f2")); + assertEquals("structa:{f1:b structa.f2:c}", s.toString()); } @Test(expected = IllegalArgumentException.class) public void requireAllChildrenHaveNonEmptyTerm() { |