diff options
Diffstat (limited to 'container-search/src/main')
-rw-r--r-- | container-search/src/main/java/com/yahoo/prelude/query/StringInItem.java | 4 | ||||
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/querytransform/LowercasingSearcher.java | 19 |
2 files changed, 23 insertions, 0 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/StringInItem.java b/container-search/src/main/java/com/yahoo/prelude/query/StringInItem.java index ebcf0de1a21..4473010082e 100644 --- a/container-search/src/main/java/com/yahoo/prelude/query/StringInItem.java +++ b/container-search/src/main/java/com/yahoo/prelude/query/StringInItem.java @@ -68,6 +68,10 @@ public class StringInItem extends InItem { tokens.add(token); } + public void removeToken(String token) { + tokens.remove(token); + } + public Collection<String> getTokens() { return Set.copyOf(tokens); } @Override 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. * |