Utilizziamo ElasticSearch per la ricerca di milioni di tag. I nostri utenti dovrebbero essere in grado di includere operatori booleani (+, -, "xy", AND, OR, parentesi). Se non viene restituito alcun riscontro, torniamo a un suggerimento di ortografia fornito da ES e ricerchiamo. Questa è la nostra risposta:Come abilitare la sfocatura per le query a frase in 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
}
}
}
}
Invece di fornire solo un ripiego per i suggerimenti ortografici, vorremmo consentire la corrispondenza fuzzy. Se, ad esempio, un utente cerca "stackoverfolw", ES dovrebbe restituire corrispondenze per "stackoverflow".
domanda aggiuntiva: Qual è il metodo migliore per "correggere" gli errori di ortografia? Come è ora, dobbiamo eseguire due richieste successive, prima con il termine di ricerca originale, poi con il termine suggerito da ES.
Grazie - questo conferma i miei pensieri. Ad ogni modo, restiamo fedeli a ciò che abbiamo già. Sembra essere un approccio molto più veloce. Riguardo alla "query fuzzy", i documenti di ElasticSearch menzionano persino un avvertimento sul non essere ben scalabile. –