2012-07-03 8 views
6

जब मैं edgengram के साथ एक विश्लेषक का उपयोग (न्यूनतम = 3, अधिकतम = 7, सामने) + term_vector =Elasticsearch - EdgeNgram + उजागर + term_vector = बुरा डाला

with_positions_offsets पाठ दस्तावेज़ होने = "CouchDB"

के साथ

जब मैं "couc" के लिए खोज

मेरे आकर्षण पर "cou" और नहीं "couc" है


ऐसा लगता है मेरी उजागर केवल न्यूनतम मिलान टोकन "cou" w पर है हील मैं सटीक टोकन (यदि संभव हो) पर कम से कम उम्मीद करता हूं या कम से कम सबसे लंबा टोकन पाया जाता है।

यह term_vector के साथ पाठ का विश्लेषण करने के बिना ठीक काम करता है = with_positions_offsets

term_vector को हटाने के प्रभाव क्या है = with_positions_offsets perfomances के लिए?

+0

किसी के पास with_positions_offsets के प्रभाव के बारे में कोई समाधान या उत्तर नहीं है? –

उत्तर

8

जब आप किसी विशिष्ट फ़ील्ड के लिए term_vector=with_positions_offsets सेट करते हैं तो इसका अर्थ यह है कि आप उस क्षेत्र के लिए प्रति दस्तावेज़ वैक्टर शब्द संग्रहीत कर रहे हैं।

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

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

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

ngram फ़ील्ड के संबंध में, वर्णित व्यवहार अजीब है क्योंकि तेज वेक्टर हाइलाइटर को ngram फ़ील्ड के लिए बेहतर समर्थन होना चाहिए, इस प्रकार मैं बिल्कुल विपरीत परिणाम की अपेक्षा करता हूं।

+0

धन्यवाद, इसलिए अब मुझे प्रदर्शन प्रभाव पता है। उम्मीद है कि कोई इस व्यवहार को समझाने में सक्षम होगा। शायद ऐसा इसलिए है क्योंकि ngram तर्क खोज क्वेरी पर भी लागू होता है, जबकि यह नहीं होना चाहिए? –

+1

इसके बारे में नहीं सोचा था, हाँ यह समझ में आता है। आमतौर पर ngrams के लिए आपके पास ngrams के बिना क्वेरी समय पर एक अलग विश्लेषण श्रृंखला होती है।अन्यथा आप क्वेरी के ngrams भी बनाते हैं और आप अपेक्षित और अजीब व्यवहार से अधिक परिणाम प्राप्त करते हैं। – javanna

+0

ठीक है धन्यवाद, मुझे तब कोशिश करनी चाहिए;) –

4

मैं जानता हूँ कि इस सवाल पुराना है, लेकिन यह अभी तक पूरी तरह से उत्तर नहीं दिया गया:

वहाँ एक और विकल्प है कि इस तरह के एक अजीब व्यवहार करने के लिए उपज कर सकते हैं:

आप अगर true को require_field_match सेट करने के लिए आप नहीं चाहते हैं कि दस्तावेज़ों के अन्य परिणामों को वर्तमान दस्तावेज़ हाइलाइटिंग को प्रभावित करना चाहिए, देखें: http://www.elasticsearch.org/guide/reference/api/search/highlighting/

+0

require_field_match केवल फ़ील्ड नामों के बारे में है, मुझे नहीं लगता कि यह इस मामले से संबंधित है। मेरा मतलब है कि यदि आपके पास शीर्षक फ़ील्ड पर कोई प्रश्न है और आप शीर्षक और विवरण को हाइलाइट करते हैं, तो विवरण फ़ील्ड पर मिलान करने वाली शर्तों को हाइलाइट नहीं किया जाएगा, जबकि डिफ़ॉल्ट रूप से वे हैं। – javanna