summaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/search/querytransform/LowercasingSearcher.java
diff options
context:
space:
mode:
Diffstat (limited to 'container-search/src/main/java/com/yahoo/search/querytransform/LowercasingSearcher.java')
-rw-r--r--container-search/src/main/java/com/yahoo/search/querytransform/LowercasingSearcher.java19
1 files changed, 19 insertions, 0 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/querytransform/LowercasingSearcher.java b/container-search/src/main/java/com/yahoo/search/querytransform/LowercasingSearcher.java
index d023c1f9143..1889c755833 100644
--- a/container-search/src/main/java/com/yahoo/search/querytransform/LowercasingSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/querytransform/LowercasingSearcher.java
@@ -64,6 +64,8 @@ public abstract class LowercasingSearcher extends Searcher {
}
} else if (next instanceof WordAlternativesItem) {
lowerCase((WordAlternativesItem) next, indexFacts);
+ } else if (next instanceof StringInItem) {
+ lowerCase((StringInItem) next, indexFacts);
}
}
}
@@ -144,6 +146,23 @@ public abstract class LowercasingSearcher extends Searcher {
}
+ private void lowerCase(StringInItem set, IndexFacts.Session indexFacts) {
+ if ( ! syntheticLowerCaseCheck(set.getIndexName(), indexFacts, true)) {
+ return;
+ }
+
+ // set.getTokens() uses Set.copyOf(), thus modification to original set is not reflected in
+ // set being iterated over.
+ var originalTokens = set.getTokens();
+ for (String originalToken : originalTokens) {
+ String token = toLowerCase(originalToken);
+ if (!originalToken.equals(token)) {
+ set.removeToken(originalToken);
+ set.addToken(token);
+ }
+ }
+ }
+
/**
* Override this to control whether a given term should be lowercased.
*