summaryrefslogtreecommitdiffstats
path: root/container-search/src/test/java/com
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-01-09 16:35:05 +0100
committerJon Bratseth <bratseth@gmail.com>2022-01-09 16:35:05 +0100
commite643c0fdd35d17c8de40ff1655fba666d7b01208 (patch)
tree0845732c2f30b46f4c318308b7d8a556d718eb3d /container-search/src/test/java/com
parent627cf67f72e0550a3eaca11e5ce0f6c5ff0df6ab (diff)
Add weakAnd grammar and parser
Diffstat (limited to 'container-search/src/test/java/com')
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/SegmentSubstitutionTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/yql/TermListTestCase.java4
-rw-r--r--container-search/src/test/java/com/yahoo/search/yql/UserInputTestCase.java44
-rw-r--r--container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java36
4 files changed, 62 insertions, 24 deletions
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/SegmentSubstitutionTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/SegmentSubstitutionTestCase.java
index 94332a52fed..69faed1da90 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/SegmentSubstitutionTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/SegmentSubstitutionTestCase.java
@@ -54,7 +54,7 @@ public class SegmentSubstitutionTestCase extends RuleBaseAbstractTestCase {
}
private static Item parseQuery(String query) {
- AllParser parser = new AllParser(new ParserEnvironment().setLinguistics(TestLinguistics.INSTANCE));
+ AllParser parser = new AllParser(new ParserEnvironment().setLinguistics(TestLinguistics.INSTANCE), false);
return parser.parse(new Parsable().setQuery(query).setLanguage(Language.CHINESE_SIMPLIFIED)).getRoot();
}
diff --git a/container-search/src/test/java/com/yahoo/search/yql/TermListTestCase.java b/container-search/src/test/java/com/yahoo/search/yql/TermListTestCase.java
index ac0d676caf7..efaaaa5fca7 100644
--- a/container-search/src/test/java/com/yahoo/search/yql/TermListTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/yql/TermListTestCase.java
@@ -23,7 +23,7 @@ public class TermListTestCase {
@Test
public void testTermListInWeightedSet() {
URIBuilder builder = searchUri();
- builder.setParameter("myTerms", "{'1':1, '2':1, '3':1}");
+ builder.setParameter("myTerms", "{'1':1, '2':1, 3:1}");
builder.setParameter("yql", "select * from sources * where weightedSet(user_id, @myTerms)");
Query query = searchAndAssertNoErrors(builder);
assertEquals("select * from sources * where weightedSet(user_id, {\"1\": 1, \"2\": 1, \"3\": 1});",
@@ -33,7 +33,7 @@ public class TermListTestCase {
@Test
public void testTermListInWand() {
URIBuilder builder = searchUri();
- builder.setParameter("myTerms", "{'1':1, '2':1, '3':1}");
+ builder.setParameter("myTerms", "{'1':1, 2:1, '3':1}");
builder.setParameter("yql", "select * from sources * where wand(user_id, @myTerms)");
Query query = searchAndAssertNoErrors(builder);
assertEquals("select * from sources * where wand(user_id, {\"1\": 1, \"2\": 1, \"3\": 1});",
diff --git a/container-search/src/test/java/com/yahoo/search/yql/UserInputTestCase.java b/container-search/src/test/java/com/yahoo/search/yql/UserInputTestCase.java
index cc1a275af5a..c41de3a73f1 100644
--- a/container-search/src/test/java/com/yahoo/search/yql/UserInputTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/yql/UserInputTestCase.java
@@ -72,7 +72,7 @@ public class UserInputTestCase {
@Test
public void testRawUserInput() {
URIBuilder builder = searchUri();
- builder.setParameter("yql", "select * from sources * where [{grammar: \"raw\"}]userInput(\"nal le\")");
+ builder.setParameter("yql", "select * from sources * where {grammar: \"raw\"}userInput(\"nal le\")");
Query query = searchAndAssertNoErrors(builder);
assertEquals("select * from sources * where default contains \"nal le\";", query.yqlRepresentation());
}
@@ -81,7 +81,7 @@ public class UserInputTestCase {
public void testSegmentedUserInput() {
URIBuilder builder = searchUri();
builder.setParameter("yql",
- "select * from sources * where [{grammar: \"segment\"}]userInput(\"nal le\")");
+ "select * from sources * where {grammar: \"segment\"}userInput(\"nal le\")");
Query query = searchAndAssertNoErrors(builder);
assertEquals("select * from sources * where default contains ([{origin: {original: \"nal le\", offset: 0, length: 6}}]phrase(\"nal\", \"le\"));", query.yqlRepresentation());
}
@@ -90,12 +90,50 @@ public class UserInputTestCase {
public void testSegmentedNoiseUserInput() {
URIBuilder builder = searchUri();
builder.setParameter("yql",
- "select * from sources * where [{grammar: \"segment\"}]userInput(\"^^^^^^^^\")");
+ "select * from sources * where {grammar: \"segment\"}userInput(\"^^^^^^^^\")");
Query query = searchAndAssertNoErrors(builder);
assertEquals("select * from sources * where default contains \"^^^^^^^^\";", query.yqlRepresentation());
}
@Test
+ public void testAnyParsedUserInput() {
+ URIBuilder builder = searchUri();
+ builder.setParameter("yql", "select * from sources * where {grammar: \"any\"}userInput('foo bar')");
+ Query query = searchAndAssertNoErrors(builder);
+ assertEquals("select * from sources * where (default contains \"foo\" OR default contains \"bar\");",
+ query.yqlRepresentation());
+ }
+
+ @Test
+ public void testAllParsedUserInput() {
+ URIBuilder builder = searchUri();
+ builder.setParameter("yql", "select * from sources * where {grammar: \"all\"}userInput('foo bar')");
+ Query query = searchAndAssertNoErrors(builder);
+ assertEquals("select * from sources * where (default contains \"foo\" AND default contains \"bar\");",
+ query.yqlRepresentation());
+ }
+
+ @Test
+ public void testWeakAndParsedUserInput() {
+ URIBuilder builder = searchUri();
+ builder.setParameter("yql", "select * from sources * where {grammar: \"weakAnd\"}userInput('foo bar')");
+ Query query = searchAndAssertNoErrors(builder);
+ assertEquals("select * from sources * where weakAnd(default contains \"foo\", default contains \"bar\");",
+ query.yqlRepresentation());
+ }
+
+ @Test
+ public void testIllegalGrammar() {
+ URIBuilder builder = searchUri();
+ builder.setParameter("yql", "select * from sources * where {grammar: \"nonesuch\"}userInput('foo bar')");
+ Query query = new Query(builder.toString());
+ Result r = execution.search(query);
+ assertNotNull(r.hits().getError());
+ assertEquals("Could not create query from YQL: No query type 'nonesuch'",
+ r.hits().getError().getDetailedMessage());
+ }
+
+ @Test
public void testCustomDefaultIndexUserInput() {
URIBuilder builder = searchUri();
builder.setParameter("yql",
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 636619bf1cc..15713dc1f97 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
@@ -399,7 +399,7 @@ public class YqlParserTestCase {
assertFalse(root instanceof WordItem);
assertTrue(root instanceof PhraseSegmentItem);
- root = parse("select foo from bar where baz contains ([{grammar:\"raw\"}]\"yoni jo dima\")").getRoot();
+ root = parse("select foo from bar where baz contains ({grammar:\"raw\"}\"yoni jo dima\")").getRoot();
assertEquals("baz:yoni jo dima", root.toString());
assertTrue(root instanceof WordItem);
assertFalse(root instanceof ExactStringItem);
@@ -410,7 +410,7 @@ public class YqlParserTestCase {
AndItem andItem = (AndItem) root;
assertEquals(3, andItem.getItemCount());
- root = parse("select foo from bar where [{grammar:\"raw\"}]userInput(\"yoni jo dima\")").getRoot();
+ root = parse("select foo from bar where {grammar:\"raw\"}userInput(\"yoni jo dima\")").getRoot();
assertTrue(root instanceof WordItem);
assertTrue(root instanceof ExactStringItem);
assertEquals("yoni jo dima", ((WordItem)root).getWord());
@@ -419,9 +419,9 @@ public class YqlParserTestCase {
@Test
public void testAccentDropping() {
assertFalse(getRootWord("select foo from bar where baz contains " +
- "([ {accentDrop: false} ]\"colors\")").isNormalizable());
+ "( {accentDrop: false} \"colors\")").isNormalizable());
assertTrue(getRootWord("select foo from bar where baz contains " +
- "([ {accentDrop: true} ]\"colors\")").isNormalizable());
+ "( {accentDrop: true} \"colors\")").isNormalizable());
assertTrue(getRootWord("select foo from bar where baz contains " +
"\"colors\"").isNormalizable());
}
@@ -429,9 +429,9 @@ public class YqlParserTestCase {
@Test
public void testCaseNormalization() {
assertTrue(getRootWord("select foo from bar where baz contains " +
- "([ {normalizeCase: false} ]\"colors\")").isLowercased());
+ "( {normalizeCase: false} \"colors\")").isLowercased());
assertFalse(getRootWord("select foo from bar where baz contains " +
- "([ {normalizeCase: true} ]\"colors\")").isLowercased());
+ "( {normalizeCase: true} \"colors\")").isLowercased());
assertFalse(getRootWord("select foo from bar where baz contains " +
"\"colors\"").isLowercased());
}
@@ -440,10 +440,10 @@ public class YqlParserTestCase {
public void testSegmentingRule() {
assertEquals(SegmentingRule.PHRASE,
getRootWord("select foo from bar where baz contains " +
- "([ {andSegmenting: false} ]\"colors\")").getSegmentingRule());
+ "( {andSegmenting: false} \"colors\")").getSegmentingRule());
assertEquals(SegmentingRule.BOOLEAN_AND,
getRootWord("select foo from bar where baz contains " +
- "([ {andSegmenting: true} ]\"colors\")").getSegmentingRule());
+ "( {andSegmenting: true} \"colors\")").getSegmentingRule());
assertEquals(SegmentingRule.LANGUAGE_DEFAULT,
getRootWord("select foo from bar where baz contains " +
"\"colors\"").getSegmentingRule());
@@ -453,10 +453,10 @@ public class YqlParserTestCase {
public void testNfkc() {
assertEquals("a\u030a",
getRootWord("select foo from bar where baz contains " +
- "([ {nfkc: false} ]\"a\\u030a\")").getWord());
+ "( {nfkc: false} \"a\\u030a\")").getWord());
assertEquals("\u00e5",
getRootWord("select foo from bar where baz contains " +
- "([ {nfkc: true} ]\"a\\u030a\")").getWord());
+ "( {nfkc: true} \"a\\u030a\")").getWord());
assertEquals("No NKFC by default",
"a\u030a",
getRootWord("select foo from bar where baz contains " +
@@ -465,19 +465,19 @@ public class YqlParserTestCase {
@Test
public void testImplicitTransforms() {
- assertFalse(getRootWord("select foo from bar where baz contains ([ {implicitTransforms: " +
- "false} ]\"cox\")").isFromQuery());
- assertTrue(getRootWord("select foo from bar where baz contains ([ {implicitTransforms: " +
- "true} ]\"cox\")").isFromQuery());
+ assertFalse(getRootWord("select foo from bar where baz contains ({implicitTransforms: " +
+ "false} \"cox\")").isFromQuery());
+ assertTrue(getRootWord("select foo from bar where baz contains ({implicitTransforms: " +
+ "true} \"cox\")").isFromQuery());
assertTrue(getRootWord("select foo from bar where baz contains \"cox\"").isFromQuery());
}
@Test
public void testConnectivity() {
QueryTree parsed = parse("select foo from bar where " +
- "title contains ([{id: 1, connectivity: {\"id\": 3, weight: 7.0}}]\"madonna\") " +
- "and title contains ([{id: 2}]\"saint\") " +
- "and title contains ([{id: 3}]\"angel\")");
+ "title contains ({id: 1, connectivity: {\"id\": 3, weight: 7.0}}\"madonna\") " +
+ "and title contains ({id: 2}\"saint\") " +
+ "and title contains ({id: 3}\"angel\")");
assertEquals("AND title:madonna title:saint title:angel",
parsed.toString());
AndItem root = (AndItem)parsed.getRoot();
@@ -489,7 +489,7 @@ public class YqlParserTestCase {
assertNull(second.getConnectedItem());
assertParseFail("select foo from bar where " +
- "title contains ([{id: 1, connectivity: {id: 4, weight: 7.0}}]\"madonna\") " +
+ "title contains ({id: 1, connectivity: {id: 4, weight: 7.0}}\"madonna\") " +
"and title contains ({id: 2}\"saint\") " +
"and title contains ({id: 3}\"angel\")",
new IllegalArgumentException("Item 'title:madonna' was specified to connect to item with ID 4, " +