From e4aee9cfbc56d3af16627b8923aa43b2de2782d5 Mon Sep 17 00:00:00 2001 From: kimchy Date: Fri, 13 May 2011 13:17:24 +0300 Subject: [PATCH] check for early exit on max expansions on multi suffix terms with prefix, and handle no terms provided --- .../common/lucene/search/MultiPhrasePrefixQuery.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/common/lucene/search/MultiPhrasePrefixQuery.java b/modules/elasticsearch/src/main/java/org/elasticsearch/common/lucene/search/MultiPhrasePrefixQuery.java index cc7cde02ac5..97bd9730a9e 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/common/lucene/search/MultiPhrasePrefixQuery.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/common/lucene/search/MultiPhrasePrefixQuery.java @@ -125,6 +125,9 @@ public class MultiPhrasePrefixQuery extends Query { } @Override public Query rewrite(IndexReader reader) throws IOException { + if (termArrays.isEmpty()) { + return MatchNoDocsQuery.INSTANCE; + } MultiPhraseQuery query = new MultiPhraseQuery(); query.setSlop(slop); int sizeMinus1 = termArrays.size() - 1; @@ -136,6 +139,9 @@ public class MultiPhrasePrefixQuery extends Query { List terms = new ArrayList(); for (Term term : suffixTerms) { getPrefixTerms(terms, term, reader); + if (terms.size() > maxExpansions) { + break; + } } if (terms.isEmpty()) { return MatchNoDocsQuery.INSTANCE;