2017-03-06 88 views
0

我有一個模糊查詢及其等價範圍查詢,並且都返回相同的搜索結果。 的查詢如下:什麼是更高效?模糊搜索或範圍搜索?

模糊搜索:

CURL -XGET 'localhost:9200/bank/_search?pretty' -d ' 
{ 
    "sort": { 
     "balance": "desc" 
    }, 
    "query": { 
     "fuzzy" : { 
      "balance" :{ 
       "value" : 20000, 
       "fuzziness" : 10000 
      } 
     } 
    } 
}' 

範圍搜索

CURL -XGET 'localhost:9200/bank/_search?pretty' -d ' 
{ 
    "sort": { 
     "balance": "desc" 
    }, 
    "query": { 
     "range" : { 
      "balance" : { 
       "gte" : 10000, 
       "lte" : 30000 
      } 
     } 
    } 
}' 

所以我的問題是哪一個更有效率?哪一個應該比另一個更受歡迎?

回答

4

模糊查詢使用"Levenshtein edit distance"。它的工作原理是這樣的:

模糊查詢生成是模糊規定的最大編輯距離內的所有可能的匹配項,然後檢查術語詞典,找出其產生的那些方面的實際存在於索引中。

所以會發生什麼是創建所有可能的變化,然後檢查它們是否存在。這可能會更昂貴,然後只是檢查gtelte,雖然當然您的確切查詢與您的索引大小有關係。

但更重要的是:第一個連做你認爲它做什麼? Fuzzy正在查看levensteihn距離,例如,如果您將2000090000進行比較,則該距離將僅爲1,因此我會懷疑後者位於您的結果集中,而您甚至不需要。所以,儘管我確實有一點疑問,因爲您似乎暗示它像您想要的那樣工作,但我仍然認爲模糊效率最低,因爲它不會產生您正在尋找的實際結果。