2010-08-23 15 views
6

मैं सोलर के साथ कुल शुरुआत कर रहा हूं और अनचाहे पात्रों के साथ क्वेरी परिणाम में समस्या है। उदाहरण के लिए जब मैं "foo bar" की खोज करता हूं तो मुझे "foo 'bar" के साथ सामग्री मिलती है। मैं बस सटीक मिलान करना चाहता हूं। जहां तक ​​मुझे पता है कि यह schema.xml फ़ाइल में स्थापित किया जा सकता है। मेरी सामग्री क्षेत्र के प्रकार:सोलर क्वेरी/फील्ड विश्लेषक

<fieldtype name="textNoStem" class="solr.TextField" positionIncrementGap="100"> 
<analyzer type="index"> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <tokenizer class="solr.KeywordTokenizerFactory"/> 
</analyzer> 
<analyzer type="query"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
</analyzer> 
</fieldtype> 

कृपया मुझे बताएं कि आप समाधान बताएं। दयालु सम्मान।

+0

स्पष्टीकरण के लिए, "foo bar" को "foo 'बार से मेल नहीं खाना चाहिए" क्योंकि foo एकल उद्धरण से घिरा हुआ है और "foo bar" को "foo" से मेल नहीं खाना चाहिए क्योंकि इसमें "बार" गुम है। क्या यही मतलब है तुम्हारा? –

उत्तर

13

दोनों विश्लेषकों के लिए, पहली पंक्ति टोकनेज़र होना चाहिए। टोकननाइज़र का उपयोग पाठ को छोटी इकाइयों (शब्दों, ज्यादातर समय) में विभाजित करने के लिए किया जाता है। आपकी ज़रूरत के लिए, WhitespaceTokenizerFactory शायद सही विकल्प है।

यदि आप पूर्ण सटीक मिलान चाहते हैं, तो टोकननाइज़र के बाद आपको किसी भी फ़िल्टर की आवश्यकता नहीं है। लेकिन यदि आप नहीं चाहते हैं कि खोज केस संवेदनशील हो, तो आपको LowerCaseFilterFactory जोड़ने की आवश्यकता है।

ध्यान दें कि आपके पास दो विश्लेषक हैं: एक प्रकार 'इंडेक्स' और अन्य प्रकार के 'क्वेरी'। जैसा कि नाम निहित हैं, पहली बार सामग्री का अनुक्रमण करते समय उपयोग किया जाता है जबकि अन्य प्रश्नों के दौरान उपयोग किया जाता है। एक नियम जो लगभग हमेशा अच्छा होता है, दोनों विश्लेषकों के लिए टोकनizers/फ़िल्टर का एक ही सेट होना है।

+0

धन्यवाद, इससे बहुत मदद मिली! – Daniel

+0

मैं टोकनिंग से पहले सिंगल कोट्स वर्णों को हटाने के लिए PatternReplaceCharFilterFactory का उपयोग करने का सुझाव दूंगा। –

+0

शायद यह बेहतर है कि क्वेरी विश्लेषक के पास सभी सामान सूचकांक विश्लेषक के अतिरिक्त अतिरिक्त समानार्थी फ़िल्टर है? – WoLfPwNeR

0

यदि आप चाहते हैं कि सटीक मिलान क्वेरी समय पर मानक टोकननाइज़र फैक्टरी के बजाय KeywordTokenizerFactory का उपयोग करें।

+0

त्वरित उत्तर के लिए धन्यवाद। हालांकि KeywordTokenizerFactory का उपयोग करते समय मुझे "foo bar" जैसे प्रश्नों के साथ कोई परिणाम नहीं मिलता है। मैंने विश्लेषक क्वेरी करने के लिए जोड़ने का प्रयास किया लेकिन अभी भी कोई बदलाव नहीं है। मैं विचारों से बाहर चला रहा हूं .. – Daniel

0

मुझे लगता है कि आपको कोई परिणाम नहीं मिल रहा है क्योंकि टोकनिंग पहले से अनुक्रमित डेटा पर अलग-अलग किया जाता है। पास्कल ने कहा, व्हाइट्स स्पेस टोकनाइज़र आपके मामले में सही विकल्प है। इसे इंडेक्स और क्वेरी समय दोनों पर प्रयोग करें और पहले से अनुक्रमित डेटा पर नहीं, कुछ डेटा अनुक्रमणित करने के बाद परिणामों की जांच करें।

मैं वास्तव में इंडेक्सिंग के साथ परिणामों को देखने के लिए विश्लेषण पृष्ठ का उपयोग करने का सुझाव देता हूं। यह काफी उपयोगी है। स्कीमा में बदलाव करें, कोर को रीफ्रेश करें, विश्लेषण पृष्ठ पर जाएं और चरण-दर-चरण विश्लेषण प्राप्त करने के लिए वर्बोज आउटपुट देखें।