blob: a5f255440e7bafa17bead0e7cd8f91ed45ae3bf5 [file] [log] [blame]
Index: lucene/core/src/test/org/apache/lucene/search/TestFuzzyQuery.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/search/TestFuzzyQuery.java (revision 1571281)
+++ lucene/core/src/test/org/apache/lucene/search/TestFuzzyQuery.java (working copy)
@@ -48,6 +48,8 @@
addDoc("abbbb", writer);
addDoc("bbbbb", writer);
addDoc("ddddd", writer);
+ addDoc("eeee", writer);
+ addDoc("eeeeee", writer);
IndexReader reader = writer.getReader();
IndexSearcher searcher = newSearcher(reader);
@@ -186,6 +188,17 @@
hits = searcher.search(query, null, 1000).scoreDocs;
assertEquals(0, hits.length);
+ // test precision/rounding issues
+ query = new FuzzyQuery(new Term("field", "eeeee"),
+ FuzzyQuery.floatToEdits(0.8f, 5), 0);
+ hits = searcher.search(query, null, 1000).scoreDocs;
+ assertEquals(2, hits.length);
+
+ query = new FuzzyQuery(new Term("field", "ddddX"),
+ FuzzyQuery.floatToEdits(0.8f, 5), 0);
+ hits = searcher.search(query, null, 1000).scoreDocs;
+ assertEquals(1, hits.length);
+
reader.close();
directory.close();
}
Index: lucene/core/src/java/org/apache/lucene/search/FuzzyQuery.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/search/FuzzyQuery.java (revision 1571281)
+++ lucene/core/src/java/org/apache/lucene/search/FuzzyQuery.java (working copy)
@@ -57,7 +57,9 @@
public final static int defaultPrefixLength = 0;
public final static int defaultMaxExpansions = 50;
public final static boolean defaultTranspositions = true;
-
+
+ //amount to round in floatToEdits
+ private final static float FUZZY_ROUND = 0.01f;
private final int maxEdits;
private final int maxExpansions;
private final boolean transpositions;
@@ -235,7 +237,7 @@
} else if (minimumSimilarity == 0.0f) {
return 0; // 0 means exact, not infinite # of edits!
} else {
- return Math.min((int) ((1D-minimumSimilarity) * termLen),
+ return Math.min((int) (((1D-minimumSimilarity) * termLen)+FUZZY_ROUND),
LevenshteinAutomata.MAXIMUM_SUPPORTED_DISTANCE);
}
}