2016-02-22 13 views
6

मैं जानना चाहता था कि क्या हल करने का कोई तरीका है कि क्या सोलर प्रतिक्रिया में पहला परिणाम मेरी क्वेरी का सटीक मिलान है? उदाहरण के लिए मैं शब्दों के साथ दस्तावेजों के लिए खोज कर रहा हूँ:सोलर सामान्यीकरण स्कोर

"64GB सोने 6s iphone" मुझे मिल गया 3 परिणाम:

1) शब्द "iphone 6s 64GB" स्कोर के साथ साथ पहला परिणाम: 187.86491

2) शब्द "iphone 6s" स्कोर के साथ साथ दूसरे परिणाम: 170.36568

3) शब्द "iphone" स्कोर के साथ साथ तीसरे परिणाम: 136.68152

जब मैं स्कोर मुझे मिल गया इन नए स्कोर को सामान्य:

1) score 1.0 
2) score 0.92 
3) score 0.66 

समस्या यहां है कि पहले परिणाम स्कोर 1.0 (केवल यह है क्योंकि उच्च Solr स्कोर के साथ पहला परिणाम मिला है, लेकिन यह नहीं कर सकते प्रमाणित करें कि यह एक सटीक मैच है) जबकि, मेरी राय में, यह ~ 0.5 होना चाहिए क्योंकि यह सटीक मिलान नहीं है। मैं जानना चाहता हूं कि मुझे जो परिणाम मिले हैं वे वास्तव में प्रासंगिक हैं या नहीं और केवल "सबसे प्रासंगिक" परिणाम लेने के लिए - उदाहरण के लिए: केवल स्कोर> 0.6 के साथ परिणाम। लेकिन अब मैं यह नहीं कर सकता क्योंकि 0.6 वास्तविक प्रासंगिकता की गवाही नहीं देता है।

उत्तर

0

"असली प्रासंगिकता" जैसी कोई चीज़ नहीं है, यही कारण है कि शीर्ष स्कोर 1.0 के लिए सामान्य नहीं है। आपके द्वारा सोलर देने वाले पैरामीटर के आधार पर चीजों को कम या ज्यादा प्रासंगिक माना जा सकता है (जैसे कि एक-दूसरे के खिलाफ व्यक्तिगत फ़ील्ड कैसे स्कोर करें)। इस संदर्भ में "60% प्रासंगिकता" वास्तव में का क्या अर्थ होगा? प्रश्नों के बीच स्कोर (आमतौर पर) तुलनात्मक नहीं होते हैं, और सूचकांक की सामग्री के आधार पर बदल जाएंगे (यदि एक ही शब्द के साथ एक नया दस्तावेज़ अनुक्रमित किया गया है, तो पिछली क्वेरी के स्कोर को फिर से चलाने पर कम किया जा सकता है)।

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

यदि आप चाहते हैं तो सभी शर्तों को उपस्थित होने की आवश्यकता है, q.op=AND का उपयोग करें, जो सभी फ़ील्ड मौजूद नहीं होने पर कोई हिट नहीं देंगे। यदि आप अधिक उन्नत मिलान करना चाहते हैं, तो mm पैरामीटर का उपयोग यह कहने के लिए करें कि कितने शब्दों को मिलान करने की आवश्यकता है (जिसे आप एक अंतराल के भीतर प्रतिशत के रूप में कर सकते हैं)।

ये सेटिंग्स प्रासंगिक हैं जब आप डिस्क्स या एडिस्मैक्स क्वेरी हैंडलर का उपयोग कर रहे हैं, जो ऐसा लगता है जैसे आप अपने प्रश्न से कर रहे हैं।

आपको क्या पूछना करने के लिए
+0

आप "शब्द 1 शब्द 2 शब्द 3" खोज रहे हैं, तो "601 प्रासंगिकता" क्या होगा, और परिणाम जो मुझे मिलता है केवल "शब्द 2 शब्द 3" होता है, मैं स्कोर में संकेत देना चाहता हूं, कि यह एक सही मैच नहीं है यह x% मैच है। आप इसे सोलर का उपयोग करके कैसे कर सकते हैं? –

+0

@ जैक ज्यूइससन आपको इसके लिए अपनी खुद की समानता वर्ग बनाना होगा, देखें [सोलर में क्वेरी समय पर टीएफ/आईडीएफ को अनदेखा करें] (http: // stackoverflow.com/questions/13825170/ignore-tf-idf-at-query-time-in-solr) – MatsLindh

0

(पर विचार नहीं क्यों आप ऐसा करना चाहते हैं) आप:

  1. उपयोग highlighting क्या डॉक्स
  2. लिए क्वेरी स्ट्रिंग की तुलना में मिलान किया जाता है वापस जाने के लिए पर प्रकाश डाला टुकड़े और सत्यापित करें कि क्या यह एक सटीक मिलान

चेतावनियां है:

  1. यदि आप स्टेमर्स इत्यादि का उपयोग कर रहे हैं, तो सटीक मिलान का मतलब केवल एक शब्द के मिलान से हो सकता है। तो आप केवल स्ट्रिंग तुलना का उपयोग नहीं कर सकते हैं, आपको पहले प्रत्येक विश्लेषण श्रृंखला के माध्यम से क्वेरी स्ट्रिंग और खंड दोनों को चलाने की आवश्यकता है (क्वेरी विश्लेषण के माध्यम से क्वेरी स्ट्रिंग, इंडेक्स विश्लेषण के माध्यम से टुकड़े)
  2. हाइलाइटिंग प्रकार के आधार पर, आपको निश्चित रूप से कुछ निश्चित करने की आवश्यकता हो सकती है अपने क्षेत्रों में विशेषताएं।