diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt index c08e215ac98..0fbf44618fd 100644 --- a/lucene/CHANGES.txt +++ b/lucene/CHANGES.txt @@ -76,6 +76,8 @@ Improvements configurable precision for non-spherical planet models. (Ignacio Vera via David Smiley) +* LUCENE-8093: TrimFilterFactory implements MultiTermAwareComponent (Alan Woodward) + ======================= Lucene 7.2.0 ======================= API Changes diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/TrimFilterFactory.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/TrimFilterFactory.java index aa3e8bd3693..1aad81d4629 100644 --- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/TrimFilterFactory.java +++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/TrimFilterFactory.java @@ -21,6 +21,8 @@ import java.util.Map; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.miscellaneous.TrimFilter; +import org.apache.lucene.analysis.util.AbstractAnalysisFactory; +import org.apache.lucene.analysis.util.MultiTermAwareComponent; import org.apache.lucene.analysis.util.TokenFilterFactory; /** @@ -35,7 +37,7 @@ import org.apache.lucene.analysis.util.TokenFilterFactory; * * @see TrimFilter */ -public class TrimFilterFactory extends TokenFilterFactory { +public class TrimFilterFactory extends TokenFilterFactory implements MultiTermAwareComponent { /** Creates a new TrimFilterFactory */ public TrimFilterFactory(Map args) { @@ -47,7 +49,11 @@ public class TrimFilterFactory extends TokenFilterFactory { @Override public TrimFilter create(TokenStream input) { - final TrimFilter filter = new TrimFilter(input); - return filter; + return new TrimFilter(input); + } + + @Override + public AbstractAnalysisFactory getMultiTermComponent() { + return this; } } diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/MultiTermAwareComponent.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/MultiTermAwareComponent.java index 700da3cce1e..1c1c4c8df78 100644 --- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/MultiTermAwareComponent.java +++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/MultiTermAwareComponent.java @@ -21,6 +21,11 @@ package org.apache.lucene.analysis.util; * analysis component factory for use with partial terms in prefix queries, * wildcard queries, range query endpoints, regex queries, etc. * + * Components implementing this interface should not add or remove tokens from + * the token stream, and should be able to deal with special characters + * indicating that multi-term queries are required (eg slashes for regex, wildcard + * characters, etc) + * * @lucene.experimental */ public interface MultiTermAwareComponent {