局部敏感散列 - Elasticsearch

Seb*_*ler 13 minhash elasticsearch locality-sensitive-hash

有没有允许LSH在Elasticsearch上的插件?如果是的话,你能指点我的位置,并告诉我一些如何使用它?谢谢

编辑:我发现ES使用MinHash插件.我怎么能用这个比较文件呢?找到重复的好设置是什么?

小智 6

  1. 有一个Elasticsearch MinHash 插件。您可以在每次索引文档时使用它提取 minhash 值,并在以后通过 minhash 查询文档。

    1. 安装 MinHash 插件:

      $ $ES_HOME/bin/plugin install org.codelibs/elasticsearch-minhash/2.3.1
      
      Run Code Online (Sandbox Code Playgroud)
    2. 创建索引时添加 minhash 分析器:

      $ curl -XPUT 'localhost:9200/my_index' -d '{
        "index":{
          "analysis":{
            "analyzer":{
              "minhash_analyzer":{
                "type":"custom",
                "tokenizer":"standard",
                "filter":["minhash"]
              }
            }
          }
        }
      }'  
      
      Run Code Online (Sandbox Code Playgroud)
    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"
            }
          }
        }
      }'
      
      Run Code Online (Sandbox Code Playgroud)
    4. 将文档添加到使用 minhash 分析器创建的索引时,会自动计算 minhash 值。
    5. A。使用 More like 此查询可用于在minhash_value字段上进行“类似”搜索:

      GET /_search
      {
          "query": {
              "more_like_this" : {
                  "fields" : ["minhash_value"],
                  "like" : "KV5rsUfZpcZdVojpG8mHLA==",
                  "min_term_freq" : 1,
                  "max_query_terms" : 12
              }
          }
      }
      
      Run Code Online (Sandbox Code Playgroud)

      b. 您还可以使用模糊查询,但它接受与结果相差2(最大)的查询。

      GET /_search
      {
          "query": {
             "fuzzy" : { "minhash_value" : "KV5rsUfZpcZdVojpG8mHLA==" }
          }
      } 
      
      Run Code Online (Sandbox Code Playgroud)

      您可以在此处找到有关模糊查询的更多信息。

  2. 或者,您可以在 elasicsearch 外部创建哈希值(编写代码来提取哈希值),每次索引文档时,您都可以运行代码并将哈希值附加到您正在索引的文档。然后如上所述使用More Like This 查询模糊查询来搜索哈希值。
  3. 最后但并非最不重要的一点是,您可以像上面那样自己编写elasticsearch插件(适合您的哈希算法)并执行上面相同的步骤。