2012-08-30 42 views
10

需要我的搜索引擎處理搜索字符串中的小拼寫錯誤並仍然返回正確結果的方法。ElasticSearch中的模糊設置

按照ElasticSearch文檔,有三個值是相關的模糊匹配的文本查詢:模糊max_expansions,並的prefix_length

不幸的是,這些參數的確切含義並沒有太多詳細信息,以及它們的理解值是多少。我知道模糊性應該是0到1.0之間的浮點數,其他兩個是整數。

任何人都可以推薦這些參數的合理「起點」值嗎?我相信我必須通過反覆試驗來調整,但我只是在尋找大小寫值來正確處理拼寫錯誤和拼寫錯誤。

回答

5

按照Fuzzy Query文檔,默認值是0.5min_similarity(它看起來像你的模糊選項), 「無界」 爲max_expansions0的prefix_length

This answer應該可以幫助您瞭解min_similarity選項。 0.5似乎是一個好的開始。

的prefix_lengthmax_expansions會影響性能:你可以嘗試用默認值開發,但可以肯定它不會縮放(lucene developers were even considering setting a default value of 2 for prefix_length)。我建議運行基準測試以找到適合您的特定情況的正確值。

12

我發現使用模糊查詢實際使用術語查詢和模糊查詢(使用相同術語)既可以檢索拼寫錯誤的結果,也可以確保輸入的搜索詞的實例出現結果最高。

I.E.

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

一些細節在這裏列出:https://medium.com/@wampum/fuzzy-queries-ae47b66b325c

+0

這個查詢是非常有用的! – cwhsu