हमें अपनी अनुक्रमणिका में एक title
क्षेत्र भंडारण कर रहे हैं और दो उद्देश्यों के लिए क्षेत्र का उपयोग करना चाहते:Elasticsearch में विश्लेषण/टोकनयुक्त क्षेत्र को कैसे क्रमबद्ध करें?
- हम एक ngram फिल्टर के साथ विश्लेषण कर रहे हैं तो हम स्वत: पूर्ण प्रदान कर सकते हैं और तुरंत परिणाम
- हम करना चाहते हैं स्कोर के बजाय
title
फ़ील्ड पर एक एएससी सॉर्ट का उपयोग करके परिणाम सूचीबद्ध करने में सक्षम हो।
सूचकांक/फिल्टर/विश्लेषक तो तरह परिभाषित किया गया है:
array(
'number_of_shards' => $this->shards,
'number_of_replicas' => $this->replicas,
'analysis' => array(
'filter' => array(
'nGram_filter' => array(
'type' => 'nGram',
'min_gram' => 2,
'max_gram' => 20,
'token_chars' => array('letter','digit','punctuation','symbol')
)
),
'analyzer' => array(
'index_analyzer' => array(
'type' => 'custom',
'tokenizer' =>'whitespace',
'char_filter' => 'html_strip',
'filter' => array('lowercase','asciifolding','nGram_filter')
),
'search_analyzer' => array(
'type' => 'custom',
'tokenizer' =>'whitespace',
'char_filter' => 'html_strip',
'filter' => array('lowercase','asciifolding')
)
)
)
),
समस्या हम सामना कर रहे हैं अप्रत्याशित परिणाम है जब title
मैदान पर क्रमबद्ध हम। एक छोटे से खोज करने के बाद, हम ElasticSearch पर sort
आदमी पृष्ठ के अंत में यह पाया ... (http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-sort.html#_memory_considerations)
स्ट्रिंग आधारित प्रकार के लिए, मैदान पर हल कर विश्लेषण किया नहीं किया जाना चाहिए/tokenized।
हम दोनों क्षेत्र का विश्लेषण कैसे कर सकते हैं और बाद में इसे कैसे क्रमबद्ध कर सकते हैं? क्रमबद्ध करने के लिए हमें not_analyzed
का उपयोग करके फ़ील्ड को दो बार स्टोर करने की आवश्यकता है? चूंकि क्षेत्र _source
title
मूल्य को मूल स्थिति में भी संग्रहीत कर रहा है, क्या इसका उपयोग सॉर्ट करने के लिए नहीं किया जा सकता है?
मैं के लिए, धन्यवाद वास्तव में क्या देख रहा था! मैं विशेष रूप से एक ही स्ट्रिंग को दो तरीकों से अनुक्रमणित करने के लिए बेवकूफ दृष्टिकोण के बारे में इस बात से प्यार करता हूं कि आपके द्वारा लिंक किए गए किसी संबंधित पृष्ठ पर दस्तावेज़ में दो अलग-अलग फ़ील्ड शामिल करना होगा;) – oucil
यदि आपके पास संग्रहीत शीर्षक का स्लग है , शायद यह एक "not_analyzed" फ़ील्ड है, इसलिए आप स्लग द्वारा सॉर्ट कर सकते हैं। – Liko
क्या आप प्रश्न के दूसरे भाग के लिए उत्तर जानते हैं: "चूंकि फ़ील्ड _ स्रोत भी इसके मूल स्थिति में शीर्षक मान संग्रहीत कर रहा है, क्या इसका उपयोग सॉर्ट करने के लिए नहीं किया जा सकता है?" मैं उत्सुक हूं कि इस मामले में स्रोत मूल्य द्वारा आदेश देने की संभावना क्यों नहीं है? –