diff --git lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingSuggester.java lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingSuggester.java
index ee681c7..921576b 100644
--- lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingSuggester.java
+++ lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingSuggester.java
@@ -74,8 +74,9 @@ import org.apache.lucene.util.fst.Util;
* then the partial text "ghost chr..." could see the
* suggestion "The Ghost of Christmas Past". Note that
* position increments MUST NOT be preserved for this example
- * to work, so you should call
- * {@link #setPreservePositionIncrements(boolean) setPreservePositionIncrements(false)}.
+ * to work, so you should call the constructor with
+ * preservePositionIncrements parameter set to
+ * false
*
*
* If SynonymFilter is used to map wifi and wireless network to
@@ -205,6 +206,14 @@ public class AnalyzingSuggester extends Lookup {
}
/**
+ * Calls {@link #AnalyzingSuggester(Analyzer, Analyzer, int, int, int, boolean)
+ * AnalyzingSuggester(indexAnalyzer, queryAnalyzer, options,
+ * maxSurfaceFormsPerAnalyzedForm, maxGraphExpansions, true)}
+ */
+ public AnalyzingSuggester(Analyzer indexAnalyzer, Analyzer queryAnalyzer, int options, int maxSurfaceFormsPerAnalyzedForm, int maxGraphExpansions) {
+ this(indexAnalyzer, queryAnalyzer, options, maxSurfaceFormsPerAnalyzedForm, maxGraphExpansions, true);
+ }
+ /**
* Creates a new suggester.
*
* @param indexAnalyzer Analyzer that will be used for
@@ -219,8 +228,11 @@ public class AnalyzingSuggester extends Lookup {
* @param maxGraphExpansions Maximum number of graph paths
* to expand from the analyzed form. Set this to -1 for
* no limit.
+ * @param preservePositionIncrements Whether position holes
+ * should appear in the automata
*/
- public AnalyzingSuggester(Analyzer indexAnalyzer, Analyzer queryAnalyzer, int options, int maxSurfaceFormsPerAnalyzedForm, int maxGraphExpansions) {
+ public AnalyzingSuggester(Analyzer indexAnalyzer, Analyzer queryAnalyzer, int options, int maxSurfaceFormsPerAnalyzedForm, int maxGraphExpansions,
+ boolean preservePositionIncrements) {
this.indexAnalyzer = indexAnalyzer;
this.queryAnalyzer = queryAnalyzer;
if ((options & ~(EXACT_FIRST | PRESERVE_SEP)) != 0) {
@@ -242,12 +254,6 @@ public class AnalyzingSuggester extends Lookup {
throw new IllegalArgumentException("maxGraphExpansions must -1 (no limit) or > 0 (got: " + maxGraphExpansions + ")");
}
this.maxGraphExpansions = maxGraphExpansions;
- preservePositionIncrements = true;
- }
-
- /** Whether to take position holes (position increment > 1) into account when
- * building the automaton, true by default. */
- public void setPreservePositionIncrements(boolean preservePositionIncrements) {
this.preservePositionIncrements = preservePositionIncrements;
}
diff --git lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/FuzzySuggester.java lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/FuzzySuggester.java
index 2456a90..9c8b745 100644
--- lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/FuzzySuggester.java
+++ lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/FuzzySuggester.java
@@ -129,6 +129,19 @@ public final class FuzzySuggester extends AnalyzingSuggester {
}
/**
+ * Calls {@link #FuzzySuggester(Analyzer, Analyzer, int, int, int, boolean, int, boolean, int, int, boolean)
+ * FuzzySuggester(indexAnalyzer, queryAnalyzer, options, maxSurfaceFormsPerAnalyzedForm, maxGraphExpansions,
+ * true, maxEdits, transpositions, nonFuzzyPrefix, minFuzzyLength, unicodeAware)}
+ */
+ public FuzzySuggester(Analyzer indexAnalyzer, Analyzer queryAnalyzer,
+ int options, int maxSurfaceFormsPerAnalyzedForm, int maxGraphExpansions,
+ int maxEdits, boolean transpositions, int nonFuzzyPrefix,
+ int minFuzzyLength, boolean unicodeAware) {
+ this(indexAnalyzer, queryAnalyzer, options, maxSurfaceFormsPerAnalyzedForm,
+ maxGraphExpansions, true, maxEdits, transpositions, nonFuzzyPrefix,
+ minFuzzyLength, unicodeAware);
+ }
+ /**
* Creates a {@link FuzzySuggester} instance.
*
* @param indexAnalyzer Analyzer that will be used for
@@ -143,6 +156,7 @@ public final class FuzzySuggester extends AnalyzingSuggester {
* @param maxGraphExpansions Maximum number of graph paths
* to expand from the analyzed form. Set this to -1 for
* no limit.
+ * @param preservePositionIncrements Whether position holes should appear in the automaton
* @param maxEdits must be >= 0 and <= {@link LevenshteinAutomata#MAXIMUM_SUPPORTED_DISTANCE} .
* @param transpositions true if transpositions should be treated as a primitive
* edit operation. If this is false, comparisons will implement the classic
@@ -153,9 +167,9 @@ public final class FuzzySuggester extends AnalyzingSuggester {
*/
public FuzzySuggester(Analyzer indexAnalyzer, Analyzer queryAnalyzer,
int options, int maxSurfaceFormsPerAnalyzedForm, int maxGraphExpansions,
- int maxEdits, boolean transpositions, int nonFuzzyPrefix,
- int minFuzzyLength, boolean unicodeAware) {
- super(indexAnalyzer, queryAnalyzer, options, maxSurfaceFormsPerAnalyzedForm, maxGraphExpansions);
+ boolean preservePositionIncrements, int maxEdits, boolean transpositions,
+ int nonFuzzyPrefix, int minFuzzyLength, boolean unicodeAware) {
+ super(indexAnalyzer, queryAnalyzer, options, maxSurfaceFormsPerAnalyzedForm, maxGraphExpansions, preservePositionIncrements);
if (maxEdits < 0 || maxEdits > LevenshteinAutomata.MAXIMUM_SUPPORTED_DISTANCE) {
throw new IllegalArgumentException("maxEdits must be between 0 and " + LevenshteinAutomata.MAXIMUM_SUPPORTED_DISTANCE);
}
diff --git lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingSuggesterTest.java lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingSuggesterTest.java
index eca1d26..1b86e20 100644
--- lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingSuggesterTest.java
+++ lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingSuggesterTest.java
@@ -175,9 +175,8 @@ public class AnalyzingSuggesterTest extends LuceneTestCase {
mapping.put(title, Long.valueOf(randomWeight));
}
}
-
- AnalyzingSuggester analyzingSuggester = new AnalyzingSuggester(new MockAnalyzer(random()));
- analyzingSuggester.setPreservePositionIncrements(random().nextBoolean());
+ AnalyzingSuggester analyzingSuggester = new AnalyzingSuggester(new MockAnalyzer(random()), new MockAnalyzer(random()),
+ AnalyzingSuggester.EXACT_FIRST | AnalyzingSuggester.PRESERVE_SEP, 256, -1, random().nextBoolean());
boolean doPayloads = random().nextBoolean();
if (doPayloads) {
List keysAndPayloads = new ArrayList<>();
@@ -214,8 +213,9 @@ public class AnalyzingSuggesterTest extends LuceneTestCase {
};
Analyzer standard = new MockAnalyzer(random(), MockTokenizer.WHITESPACE, true, MockTokenFilter.ENGLISH_STOPSET);
- AnalyzingSuggester suggester = new AnalyzingSuggester(standard);
- suggester.setPreservePositionIncrements(false);
+ AnalyzingSuggester suggester = new AnalyzingSuggester(standard, standard,
+ AnalyzingSuggester.EXACT_FIRST | AnalyzingSuggester.PRESERVE_SEP, 256, -1, false);
+
suggester.build(new InputArrayIterator(keys));
List