summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2018-05-24 14:10:27 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2018-05-24 14:10:27 +0200
commitb4dad6a90992b7122a6367a0ab0206cb7091a155 (patch)
tree829300c449b9f7bf47bf6b34dce482322aac2a27 /container-search
parent8365add7b94a88eec13e38c473f1b688e1f2d28a (diff)
Add a more sane toString and minor followup after PR comments
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/PhraseItem.java3
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/SameElementItem.java21
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/test/SameElementItemTestCase.java2
3 files changed, 19 insertions, 7 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/PhraseItem.java b/container-search/src/main/java/com/yahoo/prelude/query/PhraseItem.java
index 44555d19cc5..c3689805dd7 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/PhraseItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/PhraseItem.java
@@ -205,8 +205,7 @@ public class PhraseItem extends CompositeIndexedItem {
}
/** Phrase items uses a empty heading instead of "PHRASE " */
- protected void appendHeadingString(StringBuilder buffer) {
- }
+ protected void appendHeadingString(StringBuilder buffer) { }
protected void appendBodyString(StringBuilder buffer) {
appendIndexString(buffer);
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 a52d4dd3db3..5015ea063b4 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
@@ -7,7 +7,7 @@ import com.yahoo.protect.Validator;
import java.util.Iterator;
/**
- * This represents a query where all terms are required to match in the sma element id.
+ * This represents a query where all terms are required to match in the same element id.
* The primary usecase is to allow efficient search in arrays and maps of struct.
* The common path is the field name containing the struct.
* @author baldersheim
@@ -30,7 +30,22 @@ public class SameElementItem extends CompositeIndexedItem {
buf.append(' ');
}
}
- return buf.toString(); }
+ return buf.toString();
+ }
+
+ protected void appendHeadingString(StringBuilder buffer) { }
+ protected void appendBodyString(StringBuilder buffer) {
+ appendIndexString(buffer);
+ buffer.append('{');
+ for (Iterator<Item> i = getItemIterator(); i.hasNext();) {
+ TermItem term = (TermItem) i.next();
+ buffer.append(term.getIndexName()).append(':').append(term.getIndexedString());
+ if (i.hasNext()) {
+ buffer.append(' ');
+ }
+ }
+ buffer.append('}');
+ }
@Override
public int getNumWords() {
@@ -41,8 +56,6 @@ public class SameElementItem extends CompositeIndexedItem {
protected void adding(Item item) {
Validator.ensureInstanceOf("Child item", item, TermItem.class);
TermItem asTerm = (TermItem) item;
- Validator.ensureNotNull("Struct fieldname", asTerm.getIndexName());
- Validator.ensureNotNull("Query term", asTerm.getIndexedString());
Validator.ensureNonEmpty("Struct fieldname", asTerm.getIndexName());
Validator.ensureNonEmpty("Query term", asTerm.getIndexedString());
}
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 83c525565ba..ff3ca53319f 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
@@ -14,7 +14,7 @@ public class SameElementItemTestCase {
s.addItem(new WordItem("b", "f1"));
s.addItem(new WordItem("c", "f2"));
s.addItem(new WordItem("d", "f3"));
- assertEquals("SAME_ELEMENT f1:b f2:c f3:d", s.toString());
+ assertEquals("structa:{f1:b f2:c f3:d}", s.toString());
}
@Test(expected = IllegalArgumentException.class)
public void requireAllChildrenHaveStructMemberNameSet() {