2012-10-11 26 views
29

में विश्लेषक मुझे टायर मणि के साथ elasticsearch में विश्लेषकों की अवधारणा को समझने में परेशानी हो रही है। मैं वास्तव में इन खोज अवधारणाओं के लिए एक नौसिखिया हूँ। क्या कोई यहां मुझे कुछ संदर्भ आलेख में मदद कर सकता है या समझा सकता है कि वास्तव में विश्लेषक क्या करते हैं और उनका उपयोग क्यों किया जाता है?elasticsearch

मैं कीवर्ड, मानक, सरल, स्नोबॉल जैसे लोचदार खोज में विभिन्न विश्लेषकों का उल्लेख किया जा रहा हूं। विश्लेषकों के ज्ञान के बिना मैं वास्तव में मेरी ज़रूरत के अनुरूप फिट नहीं कर सका।

+4

मुझे वास्तव में इस भयानक ब्लॉग पोस्ट को मिला कि विश्लेषक कैसे लोचदार खोज में काम करते हैं, ठोस उदाहरणों के साथ: https://www.found.no/foundation/text-analysis-part-1/ – BrDaHa

+0

यह वास्तव में देखने के लायक था शुरुआती शुरुआत करने के लिए ... धन्यवाद @BrDaHa –

उत्तर

68

मुझे आपको एक छोटा उत्तर देने दो।

सूचकांक समय और खोज समय पर एक विश्लेषक का उपयोग किया जाता है। इसका उपयोग शर्तों की अनुक्रमणिका बनाने के लिए किया जाता है।

एक वाक्यांश को सूचीबद्ध करने के लिए, इसे शब्दों में तोड़ने के लिए उपयोगी हो सकता है। यहां विश्लेषक आता है।

यह टोकननाइज़र और टोकन फ़िल्टर लागू होता है। एक टोकनज़र एक व्हाइटस्पेस टोकनेज़र हो सकता है। यह प्रत्येक स्थान पर टोकन में एक वाक्यांश विभाजित करता है। एक लोअरकेस टोकनेज़र प्रत्येक गैर-अक्षर और सभी अक्षरों को लोअरकेस पर एक वाक्यांश विभाजित करेगा।

कुछ टोकन फ़िल्टर या परिवर्तित करने के लिए एक टोकन फ़िल्टर का उपयोग किया जाता है। उदाहरण के लिए, एक ASCII फोल्डिंग फ़िल्टर ê, é, è से e जैसे वर्णों को परिवर्तित करेगा।

एक विश्लेषक उन सभी का मिश्रण है।

आपको Analysis guide पढ़ना चाहिए और आपके पास सभी अलग-अलग विकल्पों को सही दिखाना चाहिए।

डिफ़ॉल्ट रूप से, Elasticsearch मानक विश्लेषक लागू होता है। यह सभी सामान्य अंग्रेजी शब्दों (और कई अन्य फ़िल्टर) को हटा देगा

आप यह समझने के लिए Analyze Api का भी उपयोग कर सकते हैं कि यह कैसे काम करता है। बहुत उपयोगी।

+0

उत्तर @dadoonet के लिए बहुत बहुत धन्यवाद ... –

+3

आप [इस प्लगइन] के साथ खेल सकते हैं (https://github.com/polyfractal/elasticsearch-inquisitor) को समझने के लिए विश्लेषक, टोकनकार, थोड़ा बेहतर फ़िल्टर करते हैं। – czerasz

+0

ऐसा लगता है कि यह एजग्राम टोकनेज़र के लिए काम नहीं करता है और –

6

Lucene में, anayzer tokenizer (विभाजक) + स्टेमर + stopword फिल्टर का एक संयोजन है

ElasticSearch में, विश्लेषक

  1. चरित्र फिल्टर का एक संयोजन है: "साफ ऊपर "एक स्ट्रिंग से पहले एक स्ट्रिंग है। उदाहरण: एचटीएमएल टैग
  2. टोकनेज़र: एक टोकननाइज़र होना चाहिए। यह स्ट्रिंग को अलग-अलग शब्दों या टोकन में तोड़ने के लिए प्रयोग किया जाता है
  3. टोकन फ़िल्टर: टोकन बदलें, जोड़ें या हटाएं।

    : मैं मेरे मामले में यह विश्लेषक का उपयोग करें "खुश", "खुशी" => "happi" (Snowball demo)

: Stemmer एक टोकन फिल्टर, यह शब्द के आधार पाने के लिए प्रयोग किया जाता है, उदाहरण के लिए है

 { 
     "settings":{ 
     "index" : { 
      "analysis" : { 
       "analyzer" : { 
        "analyzerWithSnowball" : { 
         "tokenizer" : "standard", 
         "filter" : ["standard", "lowercase", "englishSnowball"] 
        } 
       }, 
       "filter" : { 
        "englishSnowball" : { 
         "type" : "snowball", 
         "language" : "english" 
        } 
       } 
      } 
     } 
     } 
    } 

रेफरी:

  1. Comparison of Lucene Analyzers
  2. http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/custom-analyzers.html
0

यहां github repo पर एक शानदार प्लगइन है। यह कुछ हद तक विस्तार Analyze API है। इसे आधिकारिक लोचदार प्लगइन list पर मिला।

क्या बढ़िया बात यह है कि यह प्रत्येक चरण के बाद अपने सभी गुणों के साथ टोकन दिखाता है। इसके साथ ही विश्लेषक विन्यास को डीबग करना आसान है और देखें कि हमें ऐसे टोकन क्यों मिले और जहां हम चाहते थे कि हम हार गए।

इच्छा है कि मैंने इसे आज से पहले पाया था। इसके लिए धन्यवाद, मुझे पता चला कि मेरा keyword_repeat टोकन टोकनेज़र सही ढंग से काम नहीं कर रहा था। समस्या अगले टोकन फ़िल्टर के कारण हुई थी: icu_transform (लिप्यंतरण के लिए उपयोग किया जाता है) दुर्भाग्य से कीवर्ड विशेषता का सम्मान नहीं किया और सभी टोकन को बदल दिया। इस प्लगइन के लिए नहीं, तो मुझे नहीं पता कि मुझे और कारण क्यों मिलेगा।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^