It would trip over if the dictionary contained
words with the same prefix starting with -.
Example is searching for
"sense des aiguilles" which would break the loop
upon encountering "-aige".
Which meant that searching for "sense des aig" would
find nothing. "sense des a" would however due to "a"
not being considered due to the stoplist.
return -1;
}
final IndexEntry indexEntry = sortedIndexEntries.get(index);
return -1;
}
final IndexEntry indexEntry = sortedIndexEntries.get(index);
- if (!indexEntry.normalizedToken.startsWith(normalizedPrefix)) {
+ if (!indexEntry.normalizedToken.startsWith(normalizedPrefix) &&
+ !NormalizeComparator.withoutDash(indexEntry.normalizedToken).startsWith(normalizedPrefix)) {
break;
}
rowCount += indexEntry.numRows + indexEntry.htmlEntries.size();
break;
}
rowCount += indexEntry.numRows + indexEntry.htmlEntries.size();
return null;
}
final IndexEntry indexEntry = sortedIndexEntries.get(index);
return null;
}
final IndexEntry indexEntry = sortedIndexEntries.get(index);
- if (!indexEntry.normalizedToken.startsWith(searchToken)) {
+ if (!indexEntry.normalizedToken.startsWith(searchToken) &&
+ !NormalizeComparator.withoutDash(indexEntry.normalizedToken).startsWith(searchToken)) {
this.version = version;
}
this.version = version;
}
+ public static String withoutDash(final String a) {
+ return a.replace("-", "").replace("þ", "th").replace("Þ", "Th");
+ }
+
// Handles comparison between items containing "-".
// Also replaces other problematic cases like "thorn".
public static int compareWithoutDash(final String a, final String b, final Comparator<Object> c, int version) {
if (version < 7) return 0;
// Handles comparison between items containing "-".
// Also replaces other problematic cases like "thorn".
public static int compareWithoutDash(final String a, final String b, final Comparator<Object> c, int version) {
if (version < 7) return 0;
- String s1 = a.replace("-", "").replace("þ", "th").replace("Þ", "Th");
- String s2 = b.replace("-", "").replace("þ", "th").replace("Þ", "Th");
+ String s1 = withoutDash(a);
+ String s2 = withoutDash(b);
return c.compare(s1, s2);
}
return c.compare(s1, s2);
}