2012-09-16 49 views
9

我在查詢字符串中指定了一個fuzzy_prefix_length,但是搜索「tes」並沒有拉出標題爲「test」的帖子......任何想法我做錯了什麼?query_string中的彈性搜索模糊

這是我的查詢字符串設置

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

回答

13

你是,也許缺少的「模糊」操作者在查詢結束。試試這個:

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

啊我看到了...幾個問題,如果你不介意...我聽說通配符查詢比平均速度慢,並沒有規模。這個操作員有沒有類似的問題?此外,現在搜索「tes」會拉出一個標題爲「測試」的帖子,但搜索「est」不會......有沒有辦法讓它做到這一點......或者我是否過度了? – concept47

+1

「est」不返回任何結果,因爲您指定了非零的fuzzy_prefix_length。 fuzzy_prefix_length設置必須匹配的術語開頭的字符數。零fuzzy_prefix_length將需要elasticsearch將詞典中的所有術語與查詢中的術語進行模糊匹配。通過指定非零的fuzzy_prefix_length,可以顯着限制檢查和改善性能的術語數量。正如你所提到的,它與通配符查詢有些相似,除了術語匹配算法在模糊算子的情況下更復雜。 – imotov