Skip to content

Commit 3efbfa1

Browse files
author
Isha Gupta
committed
Fix issue with case-insensitive + wildcard + aggregration query\n\nSigned-off-by: Isha Gupta <igupta24@apple.com>
Signed-off-by: Isha Gupta <igupta24@apple.com>
1 parent efe4877 commit 3efbfa1

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

server/src/main/java/org/opensearch/common/lucene/search/AutomatonQueries.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import org.apache.lucene.util.automaton.Automata;
4040
import org.apache.lucene.util.automaton.Automaton;
4141
import org.apache.lucene.util.automaton.Operations;
42+
import org.apache.lucene.util.automaton.TooComplexToDeterminizeException;
4243

4344
import java.util.ArrayList;
4445
import java.util.Arrays;
@@ -92,7 +93,14 @@ public static AutomatonQuery caseInsensitiveTermQuery(Term term) {
9293
* Build an automaton matching a wildcard pattern, ASCII case insensitive, if the method is null, then will use {@link MultiTermQuery#CONSTANT_SCORE_BLENDED_REWRITE}.
9394
*/
9495
public static AutomatonQuery caseInsensitiveWildcardQuery(Term wildcardquery, MultiTermQuery.RewriteMethod method) {
95-
return createAutomatonQuery(wildcardquery, toCaseInsensitiveWildcardAutomaton(wildcardquery), method);
96+
Automaton automaton = toCaseInsensitiveWildcardAutomaton(wildcardquery);
97+
try {
98+
automaton = Operations.determinize(automaton, Operations.DEFAULT_DETERMINIZE_WORK_LIMIT);
99+
} catch (TooComplexToDeterminizeException e) {
100+
throw new RuntimeException("Wildcard query too complex to determinize for term: " + wildcardquery, e);
101+
}
102+
assert automaton.isDeterministic();
103+
return createAutomatonQuery(wildcardquery, automaton, method);
96104
}
97105

98106
/**

0 commit comments

Comments
 (0)