2015-09-25 5 views
10

क्या कोई प्लगइन Elasticsearch पर एलएसएच की अनुमति देता है? यदि हां, तो क्या आप मुझे स्थान पर इंगित कर सकते हैं और मुझे इसका उपयोग करने के लिए थोड़ा बता सकते हैं? धन्यवादलोकैलिटी-संवेदनशील हैशिंग - Elasticsearch

संपादित करें: मुझे पता चला कि ES MinHash प्लगइन का उपयोग करता है। मैं दस्तावेजों की तुलना एक-दूसरे से कैसे कर सकता हूं? डुप्लीकेट खोजने के लिए एक अच्छी सेटिंग क्या होगी?

+1

भी रुचि रखते हैं! – AdrianGW

उत्तर

2
  1. Elasticsearch MinHash Plugin है। जब भी आप किसी दस्तावेज़ को अनुक्रमित करते हैं और दस्तावेज़ को बाद में मिन्हैश द्वारा क्वेरी करते हैं, तो आप मिन्हैश मान निकालने के लिए इसका उपयोग कर सकते हैं।

    $ 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" 
         } 
        } 
        } 
    }' 
    
  2. : एक सूचकांक मानचित्रण में

    $ curl -XPUT 'localhost:9200/my_index' -d '{ 
        "index":{ 
        "analysis":{ 
         "analyzer":{ 
         "minhash_analyzer":{ 
          "type":"custom", 
          "tokenizer":"standard", 
          "filter":["minhash"] 
         } 
         } 
        } 
        } 
    }' 
    
  3. रखो minhash_value क्षेत्र:

    $ $ES_HOME/bin/plugin install org.codelibs/elasticsearch-minhash/2.3.1 
    
  4. जब अपने सूचकांक बनाने एक minhash विश्लेषक जोड़ें:

    1. MinHash प्लग-इन इंस्टॉल 210

    2. मिन्हैश विश्लेषक के साथ बनाए गए इंडेक्स में दस्तावेज़ जोड़ते समय मिन्हैश मान स्वचालित रूप से गणना की जाती है।
    3. ए।

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

      ख: Use More like this query "की तरह" minhash_value मैदान पर खोज करने के लिए इस्तेमाल किया जा सकता। आप fuzzy query का भी उपयोग कर सकते हैं लेकिन यह परिणाम को 2 (अधिकतम) द्वारा परिणाम से अलग करने के लिए स्वीकार करता है।

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

      आप अस्पष्ट क्वेरी here के बारे में अधिक जानकारी प्राप्त कर सकते हैं।

  5. या आप और elasicsearch के बाहर हैश मान (हैश मान को निकालने के लिए एक कोड लिखने) हर आप सूचकांक एक दस्तावेज आप कोड चलाने के लिए और दस्तावेज़ आप अनुक्रमण हैं हैश मान संलग्न कर सकते हैं बना सकते हैं। और बाद में ऊपर वर्णित अनुसार More Like This query या Fuzzy query का उपयोग करके हैश मान के साथ खोजें।
  6. अंतिम लेकिन कम से कम नहीं, आप ऊपर के रूप में elasticsearch प्लगइन लिख सकते हैं (जो आपके पास हैशिंग एल्गोरिदम उपयुक्त है) और ऊपर एक ही कदम करें।
+0

केवल कीवर्ड और टेक्स्ट फ़ील्ड पर फ़ज़ी क्वेरी का उपयोग कर सकते हैं - [minhash_value] पर नहीं जो कि प्रकार [minhash] है – alizx