2012-09-27 32 views
5

में टोकन फ़िल्टर का नियंत्रण क्रम ElasticSearch में टोकन फ़िल्टर लागू करने के क्रम को नियंत्रित करने का प्रयास कर रहा है।ElasticSearch

मुझे उन दस्तावेज़ों से पता है जो टोकनिज़र पहले लागू होते हैं, फिर टोकन फ़िल्टर, लेकिन वे उल्लेख नहीं करते हैं कि टोकन फ़िल्टर का क्रम कैसे निर्धारित किया जाता है।

यहाँ मेरी विश्लेषण सेटअप स्क्रिप्ट से एक YAML टुकड़ा है:

 KeywordNameIndexAnalyzer : 
      type : custom 
      tokenizer : whitespace 
      filter : [my_word_concatenator, keyword_ngram] 

मैं सोचा होगा कि my_word_concatenatorkeyword_ngram से पहले लागू किया जाएगा, लेकिन ऐसा लगता है जैसे कि ऐसा नहीं है। किसी को पता है कि कैसे (या अगर) इन फिल्टर के आदेश को नियंत्रित किया जा सकता है?

बहुत बहुत धन्यवाद!

+0

आपकी अपेक्षाएं सही हैं। [कस्टम विश्लेषक] में फ़िल्टर (https://github.com/elasticsearch/elasticsearch/blob/a0a8538ef9c7d8f24dc9b9f081c548f7d9e8b7cd/src/main/java/org/elasticsearch/index/analysis/CustomAnalyzer.java#L98) क्रम में लागू होते हैं फ़िल्टर सरणी द्वारा निर्दिष्ट। क्या आप एक उदाहरण प्रदान कर सकते हैं, जहां यह मामला प्रतीत नहीं होता है? – imotov

+0

आप सही हैं - आदेश का कारण लग रहा था क्योंकि मैंने टोकननाइज़र और टोकन फ़िल्टर का एक गैर-संयोजन संयोजन का उपयोग किया था। यदि आप उत्सुक हैं, तो my_word_concatenator व्हाइटस्पेस स्ट्रिप्स करता है, लेकिन चूंकि मैं व्हाइटस्पेस टोकनेज़र का उपयोग कर रहा था, इसलिए फिल्टर में प्राप्त टोकन में कोई सफेद जगह नहीं थी। तो 1 2 के बाद होने के विरोध में, बिल्कुल नहीं हो रहा था। –

उत्तर

4

एक विश्लेषक टोकननाइज़र से बना है, जो आपके पाठ को टोकन में विभाजित करता है। उस टोकन फ़िल्टर के बाद चित्र में आते हैं, क्रम में आपने उन्हें कॉन्फ़िगर किया है, क्योंकि आप एक सरणी प्रदान कर रहे हैं। यदि आपको संदेह है तो मैं आपको analyze api पर एक नज़र डालने का सुझाव दूंगा, जिसके माध्यम से आप वास्तव में परीक्षण कर सकते हैं कि कोई विश्लेषक किसी भी पाठ को अनुक्रमणित किए बिना कैसे काम करता है।

1

यह custom analyzers अनुभाग में बेहतर दस्तावेज है। तो हाँ आदेश आपके मामले में