Używamy ElasticSearch do przeszukiwania milionów tagów. Nasi użytkownicy powinni mieć możliwość dodawania operatorów boolowskich (+, -, "xy", AND, OR, nawiasów). Jeśli nie zostaną zwrócone żadne trafienia, cofamy się do sugestii pisowni dostarczonej przez ES i ponownie szukamy. Oto nasze zapytanie:Jak włączyć nieostrość w zapytaniach do fraz w ElasticSearch
$ curl -XGET 'http://127.0.0.1:9200/my_index/my_type/_search' -d '
{
"query" : {
"query_string" : {
"query" : "some test query +bools -included",
"default_operator" : "AND"
}
},
"suggest" : {
"text" : "some test query +bools -included",
"simple_phrase" : {
"phrase" : {
"field" : "my_tags_field",
"size" : 1
}
}
}
}
Zamiast tylko proponować rezygnację z sugestii pisowni, chcemy włączyć dopasowanie rozmyte. Jeśli na przykład użytkownik wyszuka hasło "stackoverfolw", ES powinno zwrócić wyniki "stackoverflow".
Dodatkowe pytanie: Jaka jest skuteczniejsza metoda "poprawiania" błędów pisowni? Tak jak obecnie, musimy wykonać dwie kolejne prośby, najpierw z pierwotnym wyszukiwanym terminem, a następnie z sugerowanym przez ES terminem.
Dzięki - to potwierdza moje myśli. W każdym razie trzymamy się tego, co już mamy. Wydaje się, że jest to znacznie szybsze podejście. Jeśli chodzi o "zapytanie rozmyte", dokumenty ElasticSearch wspominają nawet ostrzeżenie o tym, że nie są dobrze skalowalne. –