diff options
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.java | 19 |
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. * |