aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/schema
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2023-02-15 11:50:07 +0100
committerTor Egge <Tor.Egge@online.no>2023-02-15 11:50:07 +0100
commit76a847e31d8d4a2a79c967864e7d7466e67610f2 (patch)
treeab46cbc297b7eb5ad3ce24891e498aeeebc1d225 /config-model/src/main/java/com/yahoo/schema
parenta9486b78d445db8279169a8cb47575471ca3232d (diff)
Add string command to index info config.
Use index info to validate fuzzy query terms.
Diffstat (limited to 'config-model/src/main/java/com/yahoo/schema')
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/IndexInfo.java15
1 files changed, 15 insertions, 0 deletions
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/IndexInfo.java b/config-model/src/main/java/com/yahoo/schema/derived/IndexInfo.java
index 54c503a0bbd..b2648aec88e 100644
--- a/config-model/src/main/java/com/yahoo/schema/derived/IndexInfo.java
+++ b/config-model/src/main/java/com/yahoo/schema/derived/IndexInfo.java
@@ -52,6 +52,7 @@ public class IndexInfo extends Derived implements IndexInfoConfig.Producer {
private static final String CMD_PREDICATE = "predicate";
private static final String CMD_PREDICATE_BOUNDS = "predicate-bounds";
private static final String CMD_NUMERICAL = "numerical";
+ private static final String CMD_STRING = "string";
private static final String CMD_PHRASE_SEGMENTING = "phrase-segmenting";
private final Set<IndexCommand> commands = new java.util.LinkedHashSet<>();
private final Map<String, String> aliases = new java.util.LinkedHashMap<>();
@@ -166,6 +167,9 @@ public class IndexInfo extends Derived implements IndexInfoConfig.Producer {
if (field.getDataType().getPrimitiveType() instanceof NumericDataType) {
addIndexCommand(field, CMD_NUMERICAL);
}
+ if (isTypeOrNested(field, DataType.STRING)) {
+ addIndexCommand(field, CMD_STRING);
+ }
// Explicit commands
for (String command : field.getQueryCommands()) {
@@ -274,6 +278,10 @@ public class IndexInfo extends Derived implements IndexInfoConfig.Producer {
commands.add(new IndexCommand(indexName, command));
}
+ private static void addIndexCommand(IndexInfoConfig.Indexinfo.Builder iiB, String indexName, String command) {
+ iiB.command(new IndexInfoConfig.Indexinfo.Command.Builder().indexname(indexName).command(command));
+ }
+
private void addIndexAlias(String alias, String indexName) {
aliases.put(alias, indexName);
}
@@ -329,6 +337,7 @@ public class IndexInfo extends Derived implements IndexInfoConfig.Producer {
boolean anyLowerCasing = false;
boolean anyStemming = false;
boolean anyNormalizing = false;
+ boolean anyString = false;
String phraseSegmentingCommand = null;
String stemmingCommand = null;
Matching fieldSetMatching = fieldSet.getMatching(); // null if no explicit matching
@@ -350,6 +359,9 @@ public class IndexInfo extends Derived implements IndexInfoConfig.Producer {
if (field.getNormalizing().doRemoveAccents()) {
anyNormalizing = true;
}
+ if (isTypeOrNested(field, DataType.STRING)) {
+ anyString = true;
+ }
if (fieldSetMatching == null && field.getMatching().getType() != Matching.defaultType) {
fieldSetMatching = field.getMatching();
}
@@ -417,6 +429,9 @@ public class IndexInfo extends Derived implements IndexInfoConfig.Producer {
.indexname(fieldSet.getName())
.command(CMD_INDEX));
}
+ if (anyString) {
+ addIndexCommand(iiB, fieldSet.getName(), CMD_STRING);
+ }
if (fieldSetMatching != null) {
// Explicit matching set on fieldset
if (fieldSetMatching.getType().equals(MatchType.EXACT)) {