mirror of https://github.com/apache/lucene.git
LUCENE-9804: Hunspell: fix most similar dictionary entry search by reversing the comparator (#2419)
This commit is contained in:
parent
342ea856d3
commit
c61b458719
|
@ -22,6 +22,7 @@ import static org.apache.lucene.analysis.hunspell.Dictionary.AFFIX_STRIP_ORD;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Comparator;
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
import java.util.LinkedHashSet;
|
import java.util.LinkedHashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -60,7 +61,8 @@ class GeneratingSuggester {
|
||||||
|
|
||||||
private List<Weighted<Root<String>>> findSimilarDictionaryEntries(
|
private List<Weighted<Root<String>>> findSimilarDictionaryEntries(
|
||||||
String word, WordCase originalCase) {
|
String word, WordCase originalCase) {
|
||||||
PriorityQueue<Weighted<Root<String>>> roots = new PriorityQueue<>();
|
Comparator<Weighted<Root<String>>> natural = Comparator.naturalOrder();
|
||||||
|
PriorityQueue<Weighted<Root<String>>> roots = new PriorityQueue<>(natural.reversed());
|
||||||
processFST(
|
processFST(
|
||||||
dictionary.words,
|
dictionary.words,
|
||||||
(key, forms) -> {
|
(key, forms) -> {
|
||||||
|
|
|
@ -201,6 +201,10 @@ public class TestSpellChecking extends LuceneTestCase {
|
||||||
doTest("sug2");
|
doTest("sug2");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testGeneratedSuggestions() throws Exception {
|
||||||
|
doTest("ngram");
|
||||||
|
}
|
||||||
|
|
||||||
public void testMaxNGramSugsDefaultIsNotUnlimited() throws Exception {
|
public void testMaxNGramSugsDefaultIsNotUnlimited() throws Exception {
|
||||||
doTest("maxNGramSugsDefault");
|
doTest("maxNGramSugsDefault");
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,202 @@
|
||||||
|
100
|
||||||
|
A
|
||||||
|
AA
|
||||||
|
AAA
|
||||||
|
AB
|
||||||
|
ABA
|
||||||
|
ABC
|
||||||
|
ABM
|
||||||
|
ABS
|
||||||
|
AC
|
||||||
|
ACLU
|
||||||
|
ACT
|
||||||
|
ACTH
|
||||||
|
AD
|
||||||
|
ADC
|
||||||
|
ADD
|
||||||
|
ADM
|
||||||
|
ADP
|
||||||
|
AF
|
||||||
|
AFAIK
|
||||||
|
AFB
|
||||||
|
AFC
|
||||||
|
AFDC
|
||||||
|
AFN
|
||||||
|
AFT
|
||||||
|
AI
|
||||||
|
AIDS
|
||||||
|
AK
|
||||||
|
AL
|
||||||
|
AM
|
||||||
|
AMA
|
||||||
|
AMD
|
||||||
|
ANSI
|
||||||
|
ANZUS
|
||||||
|
AOL
|
||||||
|
AP
|
||||||
|
APB
|
||||||
|
APC
|
||||||
|
API
|
||||||
|
APO
|
||||||
|
APR
|
||||||
|
AR
|
||||||
|
ARC
|
||||||
|
ASAP
|
||||||
|
ASCII
|
||||||
|
ASL
|
||||||
|
ASPCA
|
||||||
|
ATM
|
||||||
|
ATP
|
||||||
|
ATV
|
||||||
|
AV
|
||||||
|
AVI
|
||||||
|
AWACS
|
||||||
|
AWOL
|
||||||
|
AWS
|
||||||
|
AZ
|
||||||
|
AZT
|
||||||
|
Aachen
|
||||||
|
Aaliyah
|
||||||
|
Aaron
|
||||||
|
Abbas
|
||||||
|
Abbasid
|
||||||
|
Abbott
|
||||||
|
Abby
|
||||||
|
Abdul
|
||||||
|
Abe
|
||||||
|
Abel
|
||||||
|
Abelard
|
||||||
|
Abelson
|
||||||
|
Aberdeen
|
||||||
|
Abernathy
|
||||||
|
Abidjan
|
||||||
|
Abigail
|
||||||
|
Abilene
|
||||||
|
Abner
|
||||||
|
Aborigine
|
||||||
|
Abraham
|
||||||
|
Abram
|
||||||
|
Abrams
|
||||||
|
Absalom
|
||||||
|
Abuja
|
||||||
|
Abyssinia
|
||||||
|
Abyssinian
|
||||||
|
Ac
|
||||||
|
Acadia
|
||||||
|
Acapulco
|
||||||
|
Accenture
|
||||||
|
Accra
|
||||||
|
Acevedo
|
||||||
|
Achaean
|
||||||
|
Achebe
|
||||||
|
Achernar
|
||||||
|
Acheson
|
||||||
|
Achilles
|
||||||
|
Aconcagua
|
||||||
|
Acosta
|
||||||
|
Acropolis
|
||||||
|
Acrux
|
||||||
|
Actaeon
|
||||||
|
Acton
|
||||||
|
Acts
|
||||||
|
Acuff
|
||||||
|
thermostat
|
||||||
|
squeaker
|
||||||
|
Theron
|
||||||
|
heather
|
||||||
|
taker
|
||||||
|
Thermos
|
||||||
|
thinker
|
||||||
|
theorist
|
||||||
|
theorize
|
||||||
|
theatrics
|
||||||
|
therapeutic
|
||||||
|
lawbreaker
|
||||||
|
Northeast
|
||||||
|
weather
|
||||||
|
tiebreaker
|
||||||
|
their
|
||||||
|
therm
|
||||||
|
there
|
||||||
|
therefor
|
||||||
|
theta
|
||||||
|
theoretic
|
||||||
|
thereunder
|
||||||
|
Theiler
|
||||||
|
therapist
|
||||||
|
thematic
|
||||||
|
therewith
|
||||||
|
icebreaker
|
||||||
|
Thespian
|
||||||
|
sneaker
|
||||||
|
theater
|
||||||
|
breaker
|
||||||
|
speaker
|
||||||
|
Heather
|
||||||
|
Whitaker
|
||||||
|
toolmaker
|
||||||
|
Dorothea
|
||||||
|
Thermopylae
|
||||||
|
thereto
|
||||||
|
theocracy
|
||||||
|
thereby
|
||||||
|
ethereal
|
||||||
|
theremin
|
||||||
|
caretaker
|
||||||
|
thereat
|
||||||
|
Theravada
|
||||||
|
threadlike
|
||||||
|
therein
|
||||||
|
thereafter
|
||||||
|
thereupon
|
||||||
|
streaker
|
||||||
|
thereof
|
||||||
|
they're
|
||||||
|
thereon
|
||||||
|
jawbreaker
|
||||||
|
shoemaker
|
||||||
|
shaker
|
||||||
|
threader
|
||||||
|
Thackeray
|
||||||
|
thermionic
|
||||||
|
heartbreak
|
||||||
|
therapy
|
||||||
|
thesauri
|
||||||
|
feathery
|
||||||
|
theatricals
|
||||||
|
takeover
|
||||||
|
leather
|
||||||
|
thespian
|
||||||
|
thunderhead
|
||||||
|
Katheryn
|
||||||
|
thereunto
|
||||||
|
thereabout
|
||||||
|
feather
|
||||||
|
Shaker
|
||||||
|
therefrom
|
||||||
|
Thea
|
||||||
|
leathery
|
||||||
|
beaker
|
||||||
|
therefore
|
||||||
|
thesaurus
|
||||||
|
homemaker
|
||||||
|
theory
|
||||||
|
theorem
|
||||||
|
theocratic
|
||||||
|
Therese
|
||||||
|
Theresa
|
||||||
|
Theodore
|
||||||
|
Theodora
|
||||||
|
Theodoric
|
||||||
|
teakettle
|
||||||
|
Thatcher
|
||||||
|
theatergoer
|
||||||
|
Katherine
|
||||||
|
watchmaker
|
||||||
|
theatrical
|
||||||
|
haymaker
|
||||||
|
breather
|
||||||
|
thither
|
||||||
|
thwacker
|
||||||
|
thermal
|
||||||
|
thermos
|
|
@ -0,0 +1 @@
|
||||||
|
Theater, Heather, Thereat
|
|
@ -0,0 +1 @@
|
||||||
|
Theaker
|
Loading…
Reference in New Issue