diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-04-12 09:25:41 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-04-12 09:25:46 +0200 |
commit | 787fa05cebd66820136372164b7e1b2805f9f061 (patch) | |
tree | 264c403f21b98bc5d4d1d65f0b49f378b4184b3b /config-model/src/test/java/com | |
parent | 015ade7cd232f217dd964da037ab202731b37cef (diff) |
Control cased/uncased in dictionary setting
Diffstat (limited to 'config-model/src/test/java/com')
-rw-r--r-- | config-model/src/test/java/com/yahoo/searchdefinition/processing/DictionaryTestCase.java | 167 |
1 files changed, 134 insertions, 33 deletions
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/DictionaryTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/DictionaryTestCase.java index ba51caca0f7..7bda2665272 100644 --- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/DictionaryTestCase.java +++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/DictionaryTestCase.java @@ -12,6 +12,7 @@ import com.yahoo.vespa.config.search.AttributesConfig; import org.junit.Test; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; import static org.junit.Assert.fail; /** @@ -44,14 +45,22 @@ public class DictionaryTestCase { " }", "}"); Search search = createSearch(def); - assertEquals(Dictionary.Type.BTREE, search.getAttribute("s1").getDictionary().getType()); - assertEquals(Dictionary.Type.BTREE, search.getAttribute("n1").getDictionary().getType()); + assertNull(search.getAttribute("s1").getDictionary()); + assertNull(search.getAttribute("n1").getDictionary()); + assertEquals(AttributesConfig.Attribute.Dictionary.Type.BTREE, + getConfig(search).attribute().get(0).dictionary().type()); + assertEquals(AttributesConfig.Attribute.Dictionary.Type.BTREE, + getConfig(search).attribute().get(1).dictionary().type()); + assertEquals(AttributesConfig.Attribute.Dictionary.Match.CASE_INSENSITIVE, + getConfig(search).attribute().get(0).dictionary().match()); + assertEquals(AttributesConfig.Attribute.Dictionary.Match.CASE_INSENSITIVE, + getConfig(search).attribute().get(1).dictionary().match()); } - void verifyNumericDictionaryControl(Dictionary.Type expected, - AttributesConfig.Attribute.Dictionary.Type.Enum expectedConfig, - String type, - String ... cfg) throws ParseException + Search verifyDictionaryControl(Dictionary.Type expected, + AttributesConfig.Attribute.Dictionary.Type.Enum expectedConfig, + String type, + String ... cfg) throws ParseException { String def = TestUtil.joinLines( "search test {", @@ -65,74 +74,166 @@ public class DictionaryTestCase { "}"); Search search = createSearch(def); assertEquals(expected, search.getAttribute("n1").getDictionary().getType()); - assertEquals(expectedConfig, - getConfig(search).attribute().get(0).dictionary().type()); + assertEquals(expectedConfig, getConfig(search).attribute().get(0).dictionary().type()); + return search; + } + + void verifyStringDictionaryControl(Dictionary.Type expectedType,Dictionary.Match expectedCase, + AttributesConfig.Attribute.Dictionary.Type.Enum expectedTypeCfg, + AttributesConfig.Attribute.Dictionary.Match.Enum expectedCaseCfg, + String type, + String ... cfg) throws ParseException + { + + Search search = verifyDictionaryControl(expectedType, expectedTypeCfg, type, cfg); + assertEquals(expectedCase, search.getAttribute("n1").getDictionary().getMatch()); + assertEquals(expectedCaseCfg, getConfig(search).attribute().get(0).dictionary().match()); + } + + @Test + public void testCasedBtreeSettings() throws ParseException { + verifyDictionaryControl(Dictionary.Type.BTREE, + AttributesConfig.Attribute.Dictionary.Type.BTREE, + "int", + "dictionary:cased"); } @Test public void testNumericBtreeSettings() throws ParseException { - verifyNumericDictionaryControl(Dictionary.Type.BTREE, + verifyDictionaryControl(Dictionary.Type.BTREE, AttributesConfig.Attribute.Dictionary.Type.BTREE, "int", "dictionary:btree"); } @Test public void testNumericHashSettings() throws ParseException { - verifyNumericDictionaryControl(Dictionary.Type.HASH, + verifyDictionaryControl(Dictionary.Type.HASH, AttributesConfig.Attribute.Dictionary.Type.HASH, "int", "dictionary:hash"); } @Test public void testNumericBtreeAndHashSettings() throws ParseException { - verifyNumericDictionaryControl(Dictionary.Type.BTREE_AND_HASH, + verifyDictionaryControl(Dictionary.Type.BTREE_AND_HASH, AttributesConfig.Attribute.Dictionary.Type.BTREE_AND_HASH, "int", "dictionary:btree", "dictionary:hash"); } @Test public void testNumericArrayBtreeAndHashSettings() throws ParseException { - verifyNumericDictionaryControl(Dictionary.Type.BTREE_AND_HASH, + verifyDictionaryControl(Dictionary.Type.BTREE_AND_HASH, AttributesConfig.Attribute.Dictionary.Type.BTREE_AND_HASH, "array<int>", "dictionary:btree", "dictionary:hash"); } @Test public void testNumericWSetBtreeAndHashSettings() throws ParseException { - verifyNumericDictionaryControl(Dictionary.Type.BTREE_AND_HASH, + verifyDictionaryControl(Dictionary.Type.BTREE_AND_HASH, AttributesConfig.Attribute.Dictionary.Type.BTREE_AND_HASH, "weightedset<int>", "dictionary:btree", "dictionary:hash"); } @Test + public void testStringBtreeSettings() throws ParseException { + verifyStringDictionaryControl(Dictionary.Type.BTREE, Dictionary.Match.UNCASED, + AttributesConfig.Attribute.Dictionary.Type.BTREE, + AttributesConfig.Attribute.Dictionary.Match.UNCASED, + "string", + "dictionary:btree"); + } + @Test + public void testStringBtreeUnCasedSettings() throws ParseException { + verifyStringDictionaryControl(Dictionary.Type.BTREE, Dictionary.Match.UNCASED, + AttributesConfig.Attribute.Dictionary.Type.BTREE, + AttributesConfig.Attribute.Dictionary.Match.UNCASED, + "string", + "dictionary { btree\nuncased\n}"); + } + @Test + public void testStringBtreeCasedSettings() throws ParseException { + verifyStringDictionaryControl(Dictionary.Type.BTREE, Dictionary.Match.CASED, + AttributesConfig.Attribute.Dictionary.Type.BTREE, + AttributesConfig.Attribute.Dictionary.Match.CASED, + "string", + "dictionary { btree\ncased\n}"); + } + @Test + public void testStringHashSettings() throws ParseException { + verifyStringDictionaryControl(Dictionary.Type.HASH, Dictionary.Match.UNCASED, + AttributesConfig.Attribute.Dictionary.Type.HASH, + AttributesConfig.Attribute.Dictionary.Match.UNCASED, + "string", + "dictionary:hash"); + } + @Test + public void testStringHashUnCasedSettings() throws ParseException { + verifyStringDictionaryControl(Dictionary.Type.HASH, Dictionary.Match.UNCASED, + AttributesConfig.Attribute.Dictionary.Type.HASH, + AttributesConfig.Attribute.Dictionary.Match.UNCASED, + "string", + "dictionary { hash\nuncased\n}"); + } + @Test + public void testStringHashCasedSettings() throws ParseException { + verifyStringDictionaryControl(Dictionary.Type.HASH, Dictionary.Match.CASED, + AttributesConfig.Attribute.Dictionary.Type.HASH, + AttributesConfig.Attribute.Dictionary.Match.CASED, + "string", + "dictionary { hash\ncased\n}"); + } + @Test + public void testStringBtreeHashSettings() throws ParseException { + verifyStringDictionaryControl(Dictionary.Type.BTREE_AND_HASH, Dictionary.Match.UNCASED, + AttributesConfig.Attribute.Dictionary.Type.BTREE_AND_HASH, + AttributesConfig.Attribute.Dictionary.Match.UNCASED, + "string", + "dictionary{hash\nbtree\n}"); + } + @Test + public void testStringBtreeHashUnCasedSettings() throws ParseException { + verifyStringDictionaryControl(Dictionary.Type.BTREE_AND_HASH, Dictionary.Match.UNCASED, + AttributesConfig.Attribute.Dictionary.Type.BTREE_AND_HASH, + AttributesConfig.Attribute.Dictionary.Match.UNCASED, + "string", + "dictionary { hash\nbtree\nuncased\n}"); + } + @Test + public void testStringBtreeHashCasedSettings() throws ParseException { + verifyStringDictionaryControl(Dictionary.Type.BTREE_AND_HASH, Dictionary.Match.CASED, + AttributesConfig.Attribute.Dictionary.Type.BTREE_AND_HASH, + AttributesConfig.Attribute.Dictionary.Match.CASED, + "string", + "dictionary { btree\nhash\ncased\n}"); + } + @Test public void testNonNumericFieldsFailsDictionaryControl() throws ParseException { - String def = - "search test {\n" + - " document test {\n" + - " field n1 type string {\n" + - " indexing: summary | attribute\n" + - " dictionary:btree\n" + - " }\n" + - " }\n" + - "}\n"; + String def = TestUtil.joinLines( + "search test {", + " document test {", + " field n1 type bool {", + " indexing: summary | attribute", + " dictionary:btree", + " }", + " }", + "}"); try { SearchBuilder sb = SearchBuilder.createFromString(def); fail("Controlling dictionary for non-numeric fields are not yet supported."); } catch (IllegalArgumentException e) { - assertEquals("For search 'test', field 'n1': You can only specify 'dictionary:' for numeric fields", e.getMessage()); + assertEquals("For search 'test', field 'n1': You can only specify 'dictionary:' for numeric or string fields", e.getMessage()); } } @Test - public void testNonFastSearchFieldsFailsDictionaryControl() throws ParseException { - String def = - "search test {\n" + - " document test {\n" + - " field n1 type int {\n" + - " indexing: summary | attribute\n" + - " dictionary:btree\n" + - " }\n" + - " }\n" + - "}\n"; + public void testNonFastSearchNumericFieldsFailsDictionaryControl() throws ParseException { + String def = TestUtil.joinLines( + "search test {", + " document test {", + " field n1 type int {", + " indexing: summary | attribute", + " dictionary:btree", + " }", + " }", + "}"); try { SearchBuilder sb = SearchBuilder.createFromString(def); fail("Controlling dictionary for non-fast-search fields are not allowed."); |