2012-08-30 3 views
10

Ho bisogno di un modo per il mio motore di ricerca di gestire piccoli refusi nelle stringhe di ricerca e di restituire sempre i risultati corretti.Impostazioni di sfocatura in ElasticSearch

Secondo la documentazione elasticsearch, ci sono tre valori che sono rilevanti per la corrispondenza fuzzy nella query di testo: confusione, max_expansions, e prefix_length.

Sfortunatamente, non ci sono molti dettagli disponibili su cosa esattamente fanno questi parametri e quali sono per loro i valori sensati. So che la sfocatura dovrebbe essere un float tra 0 e 1.0 e gli altri due sono interi.

Qualcuno può consigliare valori ragionevoli "punto di partenza" per questi parametri? Sono sicuro che dovrò sintonizzarmi per tentativi ed errori, ma sto solo cercando i valori di ballpark per gestire correttamente refusi e errori ortografici.

risposta

5

Secondo il Fuzzy Query doc, i valori di default sono 0.5 per min_similarity (che si presenta come la soluzione confusione), "illimitata" per max_expansions e 0 per prefix_length.

This answer dovrebbe aiutare a comprendere l'opzione min_similarity. 0.5 sembra essere un buon inizio.

prefix_length e max_expansions influisce sulle prestazioni: si può provare e sviluppare con i valori di default, ma essere sicuri che non scala (lucene developers were even considering setting a default value of 2 for prefix_length). Consiglierei di eseguire benchmark per trovare i valori corretti per il tuo caso specifico.

12

L'ho trovato utile quando si utilizzava la query fuzzy per utilizzare effettivamente sia una query di termini che una query fuzzy (con lo stesso termine) per recuperare i risultati per errori di battitura, ma anche assicurare che le istanze della parola di ricerca immessa apparissero il più alto nei risultati.

I.E.

{ 
    "query": { 
     "bool": { 
      "should": [ 
       { 
        "match": { 
         "_all": search_term 
        } 
       }, 
       { 
        "match": { 
         "_all": { 
          "query": search_term, 
          "fuzziness": "1", 
          "prefix_length": 2 
         } 
        } 
       } 
      ] 
     } 
    } 
} 

qualche dettaglio in più elencate qui: https://medium.com/@wampum/fuzzy-queries-ae47b66b325c

+0

Questa query è molto utile! – cwhsu