summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2018-06-04 17:02:49 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2018-06-04 17:02:49 +0200
commit64e0257ab43a3d6fb1ebd7ec80037dc9ffc8f2ca (patch)
tree91d721083a64aa9c4004a080dc605cfad6aaaa3a /container-search
parent2dbe8f32f9ff6c6ebaf8b07afea2b352ad5bc7b6 (diff)
No longer needed to prefix children of sameelement as backend now handles it as it should.
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/SameElementItem.java30
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/VespaSerializer.java4
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/test/SameElementItemTestCase.java5
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() {