2017-03-06 17 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"が使用されます。それは次のように機能します。

ファジークエリがあいまいに指定された最大編集距離内にあるすべての可能なマッチング条件を生成し、実際にインデックスに存在し、それらの生成された用語のかを調べるために用語辞書をチェックします。

何が起こるかは、すべてのバリエーションが作成され、存在するかどうかを確認することです。これはちょうどgteまたはlteをチェックするより高価なことができますが、あなたの正確なクエリとインデックスのサイズが重要です。

しかし、もっと重要なこと:最初の人でも、あなたはそれが何をすると思いますか?たとえば、あなたの2000090000に比較すると、ファジーはlevensteihn距離を調べています。したがって、私は後者があなたの望む結果セットにあると思われます。あなたが望むように動作することを暗示しているように私は少し疑いがありますが、あなたが探している実際の結果が得られないので、ファジーが最も効率的ではないと言います。

関連する問題