You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rj...@apache.org on 2014/08/05 17:39:20 UTC
svn commit: r1615945 - in /lucene/dev/trunk/lucene: CHANGES.txt
core/src/java/org/apache/lucene/search/FuzzyQuery.java
core/src/test/org/apache/lucene/search/TestFuzzyQuery.java
Author: rjernst
Date: Tue Aug 5 15:39:20 2014
New Revision: 1615945
URL: http://svn.apache.org/r1615945
Log:
LUCENE-5869: Added restriction to positive values for maxExpansions in FuzzyQuery
Modified:
lucene/dev/trunk/lucene/CHANGES.txt
lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/FuzzyQuery.java
lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestFuzzyQuery.java
Modified: lucene/dev/trunk/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/CHANGES.txt?rev=1615945&r1=1615944&r2=1615945&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/CHANGES.txt (original)
+++ lucene/dev/trunk/lucene/CHANGES.txt Tue Aug 5 15:39:20 2014
@@ -226,6 +226,9 @@ Bug Fixes
documents will now throw IllegalStateException if the max count
would be exceeded, instead of silently creating an unusable
index. (Mike McCandless)
+
+* LUCENE-5869: Added restriction to positive values for maxExpansions in FuzzyQuery.
+ (Ryan Ernst)
Test Framework
Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/FuzzyQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/FuzzyQuery.java?rev=1615945&r1=1615944&r2=1615945&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/FuzzyQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/FuzzyQuery.java Tue Aug 5 15:39:20 2014
@@ -89,8 +89,8 @@ public class FuzzyQuery extends MultiTer
if (prefixLength < 0) {
throw new IllegalArgumentException("prefixLength cannot be negative.");
}
- if (maxExpansions < 0) {
- throw new IllegalArgumentException("maxExpansions cannot be negative.");
+ if (maxExpansions <= 0) {
+ throw new IllegalArgumentException("maxExpansions must be positive.");
}
this.term = term;
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestFuzzyQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestFuzzyQuery.java?rev=1615945&r1=1615944&r2=1615945&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestFuzzyQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestFuzzyQuery.java Tue Aug 5 15:39:20 2014
@@ -31,6 +31,7 @@ import org.apache.lucene.index.RandomInd
import org.apache.lucene.index.Term;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.LuceneTestCase;
+import org.apache.lucene.util.automaton.LevenshteinAutomata;
/**
* Tests {@link FuzzyQuery}.
@@ -372,6 +373,43 @@ public class TestFuzzyQuery extends Luce
reader.close();
index.close();
}
+
+ public void testValidation() {
+ try {
+ new FuzzyQuery(new Term("field", "foo"), -1, 0, 1, false);
+ fail("Expected error for illegal max edits value");
+ } catch (IllegalArgumentException e) {
+ assertTrue(e.getMessage().contains("maxEdits"));
+ }
+
+ try {
+ new FuzzyQuery(new Term("field", "foo"), LevenshteinAutomata.MAXIMUM_SUPPORTED_DISTANCE + 1, 0, 1, false);
+ fail("Expected error for illegal max edits value");
+ } catch (IllegalArgumentException e) {
+ assertTrue(e.getMessage().contains("maxEdits must be between"));
+ }
+
+ try {
+ new FuzzyQuery(new Term("field", "foo"), 1, -1, 1, false);
+ fail("Expected error for illegal prefix length value");
+ } catch (IllegalArgumentException e) {
+ assertTrue(e.getMessage().contains("prefixLength cannot be negative"));
+ }
+
+ try {
+ new FuzzyQuery(new Term("field", "foo"), 1, 0, -1, false);
+ fail("Expected error for illegal max expansions value");
+ } catch (IllegalArgumentException e) {
+ assertTrue(e.getMessage().contains("maxExpansions must be positive"));
+ }
+
+ try {
+ new FuzzyQuery(new Term("field", "foo"), 1, 0, -1, false);
+ fail("Expected error for illegal max expansions value");
+ } catch (IllegalArgumentException e) {
+ assertTrue(e.getMessage().contains("maxExpansions must be positive"));
+ }
+ }
private void addDoc(String text, RandomIndexWriter writer) throws IOException {
Document doc = new Document();