15

Elasticsearch で LSH を許可するプラグインはありますか? はいの場合は、その場所を示して、その使い方を少し教えていただけますか? ありがとう

編集: ES が MinHash プラグインを使用していることがわかりました。これを使用してドキュメントを相互に比較するにはどうすればよいですか? 重複を見つけるのに適した設定は何ですか?

4

1 に答える 1

5
  1. Elasticsearch MinHash Pluginがあります。これを使用して、ドキュメントにインデックスを付けるたびに minhash 値を抽出し、後で minhash でドキュメントをクエリできます。

    1. MinHash プラグインをインストールします。

      $ $ES_HOME/bin/plugin install org.codelibs/elasticsearch-minhash/2.3.1
      
    2. インデックスの作成時に minhash アナライザーを追加します。

      $ curl -XPUT 'localhost:9200/my_index' -d '{
        "index":{
          "analysis":{
            "analyzer":{
              "minhash_analyzer":{
                "type":"custom",
                "tokenizer":"standard",
                "filter":["minhash"]
              }
            }
          }
        }
      }'  
      
    3. minhash_valueフィールドをインデックス マッピングに入れます。

      $ curl -XPUT "localhost:9200/my_index/my_type/_mapping" -d '{
        "my_type":{
          "properties":{
            "message":{
              "type":"string",
              "copy_to":"minhash_value"
            },
            "minhash_value":{
              "type":"minhash",
              "minhash_analyzer":"minhash_analyzer"
            }
          }
        }
      }'
      
    4. minhash アナライザーで作成したインデックスにドキュメントを追加すると、minhash 値が自動的に計算されます。
    5. を。Use More like このクエリminhash_valueを使用して、フィールドで「いいね」検索を実行できます。

      GET /_search
      {
          "query": {
              "more_like_this" : {
                  "fields" : ["minhash_value"],
                  "like" : "KV5rsUfZpcZdVojpG8mHLA==",
                  "min_term_freq" : 1,
                  "max_query_terms" : 12
              }
          }
      }
      

      b. ファジー クエリを使用することもできますが、結果と異なる2(最大) クエリを受け入れます。

      GET /_search
      {
          "query": {
             "fuzzy" : { "minhash_value" : "KV5rsUfZpcZdVojpG8mHLA==" }
          }
      } 
      

      ファジー クエリの詳細については、こちらを参照してください。

  2. または、elasicsearch の外部でハッシュ値を作成し (ハッシュ値を抽出するコードを記述)、ドキュメントのインデックスを作成するたびに、コードを実行して、インデックスを作成しているドキュメントにハッシュ値を添付することができます。その後、前述のMore Like This クエリまたはFuzzy クエリを使用して、ハッシュ値で検索します。
  3. 最後になりましたが、上記のようにelasticsearchプラグインを自分で作成し(ハッシュアルゴリズムに適しています)、上記と同じ手順を実行できます。
于 2016-12-21T02:39:31.277 に答える