diff --git a/lucene/core/src/java/org/apache/lucene/search/MultiTermQuery.java b/lucene/core/src/java/org/apache/lucene/search/MultiTermQuery.java index 20e91a9..9daccef 100644 --- a/lucene/core/src/java/org/apache/lucene/search/MultiTermQuery.java +++ b/lucene/core/src/java/org/apache/lucene/search/MultiTermQuery.java @@ -68,6 +68,13 @@ public abstract class MultiTermQuery extends Query { /** Abstract class that defines how the query is rewritten. */ public static abstract class RewriteMethod { public abstract Query rewrite(IndexReader reader, MultiTermQuery query) throws IOException; + /** + * Returns the {@link MultiTermQuery}s {@link TermsEnum} + * @see MultiTermQuery#getTermsEnum(Terms, AttributeSource); + */ + protected TermsEnum getTermsEnum(MultiTermQuery query, Terms terms, AttributeSource atts) throws IOException { + return query.getTermsEnum(terms, atts); // allow RewriteMethod subclasses to pull a TermsEnum from the MTQ + } } /** A rewrite method that first creates a private Filter, diff --git a/lucene/core/src/java/org/apache/lucene/search/TermCollectingRewrite.java b/lucene/core/src/java/org/apache/lucene/search/TermCollectingRewrite.java index 049045f..7a64ccb 100644 --- a/lucene/core/src/java/org/apache/lucene/search/TermCollectingRewrite.java +++ b/lucene/core/src/java/org/apache/lucene/search/TermCollectingRewrite.java @@ -62,7 +62,7 @@ abstract class TermCollectingRewrite extends MultiTermQuery.Rew continue; } - final TermsEnum termsEnum = query.getTermsEnum(terms, collector.attributes); + final TermsEnum termsEnum = getTermsEnum(query, terms, collector.attributes); assert termsEnum != null; if (termsEnum == TermsEnum.EMPTY)