2014-05-09 14 views
6

elasticsearch में लगातार स्कोर क्वेरी की मेरी समझ यह है कि बूस्ट फैक्टर को प्रत्येक मिलान क्वेरी के लिए स्कोर के रूप में असाइन किया जाएगा। documentation का कहना है:लगातार स्कोर क्वेरी elasticsearch boosting

एक क्वेरी है कि एक फिल्टर या किसी अन्य क्वेरी लपेटता है और बस फिल्टर में प्रत्येक दस्तावेज़ के लिए क्वेरी को बढ़ावा देने के बराबर एक निरंतर स्कोर देता है।

लेकिन जब मैं इस क्वेरी भेजें:

"query": { 
    "constant_score": { 
     "filter": { 
      "term": { 
       "source": "BBC" 
      } 
     }, 
     "boost": 3 
    } 
}, 
"fields": ["title", "source"] 

सभी मिलान दस्तावेजों 1 के स्कोर दिया जाता है ?! मैं यह नहीं समझ सकता कि मैं क्या गलत कर रहा हूं, और निरंतर_स्कोर में फ़िल्टर के बजाय क्वेरी के साथ भी कोशिश की थी।

+1

के साथ एक ही क्वेरी चलाने [समझाने] (http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-explain.html#search-request-explain) सत्य पर सेट है और शायद स्कोर में बेहतर अंतर्दृष्टि प्राप्त करेगा। – keety

उत्तर

2

स्कोर केवल एक दिए गए परिणाम सेट में अन्य सभी स्कोर, के सापेक्ष के लिए होती हैं तो जहां सब कुछ 3 के स्कोर है एक परिणाम के सेट जहां सब कुछ 1.

का स्कोर है एक परिणाम के सेट के रूप में ही है

वास्तव में, प्रासंगिकता _score का एकमात्र उद्देश्य वर्तमान क्वेरी के परिणामों को सही क्रम में सॉर्ट करना है। आपको अलग-अलग प्रश्नों से प्रासंगिकता स्कोर की तुलना करने की कोशिश नहीं करनी चाहिए। - Elasticsearch Guide

या तो निरंतर स्कोर को अनदेखा किया जा रहा है क्योंकि इसे किसी अन्य क्वेरी के साथ जोड़ा नहीं जा रहा है या इसे सामान्यीकृत किया जा रहा है। जैसा कि @ केटी ने कहा, यह देखने के लिए कि क्या हो रहा है, explain के आउटपुट की जांच करें।

0

Constant score query किसी भी मेलिंग दस्तावेज के बराबर स्कोर देता है चाहे किसी भी स्कोरिंग कारक जैसे टीएफ, आईडीएफ इत्यादि। इसका उपयोग तब किया जा सकता है जब आप परवाह नहीं करते कि दस्तावेज़ कितना मेल खाता है, लेकिन अगर कोई डॉक्टर मेल खाता है या नहीं और स्कोर दे भी, filter के विपरीत।

किसी विशेष क्वेरी के लिए सभी मिलते-जुलते दस्तावेज़ों के लिए सचमुच 3 के रूप में स्कोर चाहते हैं, तो आप function score query, कुछ का उपयोग करना चाहिए की तरह

"query": { "function_score": { "functions": [ { "filter": { "term": { "source": "BBC" } }, "weight": 3 } ] } ... }

संबंधित मुद्दे