Oto analizator i filtr, aby zacząć. Trudno jest objąć wszystkie przypadki, ale filtr asciifolding
rozwiąże problemy z kartą Francois kontra Francois .
W poniższym przykładzie zachowa oryginał, aby zapytanie dla François i Francois rozwiązało ten sam zestaw wyników.
"analyzer": {
"name_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase",
"trim",
"my_ascii_folding"
]
}
},
"filter": {
"my_ascii_folding" : {
"type" : "asciifolding",
"preserve_original" : true
}
}
Source
Definiując filtr synonimów, można zdefiniować listę powszechnie podobnych nazwach w języku polskim (może linia jak François => Francois
w swoich synonimów plików na przykład), że załatwi w krótki bieg.
Wreszcie filtr pattern_replace
char z "([A-Za-z]+)ae([A-Za-z]+)" => "$1a$2"
wzór można obrócić cały Verhaeven
do Verhaven
Coś jak ...
"char_filter": {
"ae_char_filter": {
"type": "pattern_replace",
"pattern": "([A-Za-z]+)ae([A-Za-z]+)",
"replacement": "$1a$2"
}
}
Nawet Peter de Langhe kontra Peter Delange może być rozwiązany z pattern_replace
filtr char:
"char_filter": {
"de_char_filter": {
"type": "pattern_replace",
"pattern": "([A-Za-z]+) de ([A-Za-z]+)",
"replacement": "$1 de$2"
}
}
Nie Naprawdę to, o co prosiłeś, ale zostawiam to tutaj, ponieważ jest to obowiązkowe dla wszystkich programowo przetwarzających nazwiska: http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about -names/ Znalazłem go na slashdot kilka lat temu. Mam nadzieję, że uznasz to za stosowne i użyteczne. – Jarmund
Mogę tylko zgadywać, ale wygląda na to, że prawdopodobnie najbardziej skorzystasz na dopasowaniu fonetycznym, które jest dostępne jako [wtyczka elasticsearch] (https://github.com/elasticsearch/elasticsearch-analysis-phonetic) – femtoRgon