2012-09-16 20 views
9

Sto specificando un fuzzy_prefix_length nella stringa di query, ma una ricerca di "tes" non sta tirando su post che sono intitolati "test" ... qualche idea su cosa sto facendo male?Sfumatura di ricerca elastica in stringa_questazione

questa è la mia domanda di impostazione stringa

"query" : { 
    "query_string" : { 
    "query" : the-query-string-goes-here, 
    "default_operator" : "AND", 
    "fuzzy_prefix_length" : 3, 
    } 
} 

risposta

13

Tu sei, probabilmente, operatore mancante "fuzzy" alla fine della query. Prova questo:

"query" : { 
    "query_string" : { 
    "query" : "tes~", 
    "default_operator" : "AND", 
    "fuzzy_prefix_length" : 3, 
    } 
} 
+0

Ah, vedo ... un paio di domande se non ti dispiace ... Ho sentito che le query con caratteri jolly sono più lente della media e non scalano. Problemi simili con questo operatore? Inoltre, in questo momento una ricerca di "tes" tirerà su un post intitolato "test", ma una ricerca per "est" non ... c'è un modo per farlo fare ... o sto superando? – concept47

+1

"est" non restituisce alcun risultato perché hai specificato non-zero fuzzy_prefix_length. Il fuzzy_prefix_length imposta il numero di caratteri all'inizio del termine che devono corrispondere. Zero fuzzy_prefix_length richiederebbe elasticsearch di corrispondere in modo sfocato a tutti i termini nel dizionario al termine della query. Specificando nonzzy fuzzy_prefix_length, puoi limitare in modo significativo il numero di termini da controllare e migliorare le prestazioni. Come hai detto, è in qualche modo simile alle query con caratteri jolly, tranne che l'algoritmo di corrispondenza del termine è più sofisticato in caso di operatore fuzzy. – imotov

Problemi correlati