Elasticsearch boost score with nested query -
मेरे पास Elasticsearch संस्करण 1.3.4 में निम्न क्वेरी है:
{"फ़िल्टर" : {"Bool": {"bool": {"bool": {"bool": {"चाहिए": [{"match_phrase": {"_all": "java"}}, {"bool": { "चाहिए": [{"match_phrase": {"_all": "adobe creative suite"}}}}}]}}, {"bool": {"चाहिए": [{"नेस्टेड": {"path": "" "{": "{" "शब्द": {"skill.name.original": "java"}}, {"bool": {"चाहिए": [ {"मैच": {"skill.source": {"query": "linkedin", "boost": 5}}}, {"match": {"skills.source": {"query": "meetup" "" "" "" "" "" "" "" ")", "Filter": "" और " : ["बूल": {"चाहिए": [{"शब्द": {"skill.name.original": "java"}}}}}, {"bool": {"चाहिए": [{शब्द ": {" Skill.name.original ":" ajax "}}, {" शब्द ": {" skill.name.original ":" html "}}]}}}}}} मैपिंग इस तरह दिखते हैं:
और आखिरकार कौशल संरचना (अन्य भागों को छोड़कर) के लिए दस्तावेज़ संरचना, ऐसा दिखता है:
<">" कौशल ": [{" नाम ":" जावा "," स्रोत ": [" जुड़ा हुआ "," फेसबुक "]}, {" नाम ":" html "," स्रोत ": [" मिलना "] }] इस क्वेरी के साथ मेरा लक्ष्य है, पहले फिल्टर के साथ कुछ अप्रासंगिक हिट फिल्टर (क्वेरी के नीचे) को फ़िल्टर करें, फिर पूरे दस्तावेज़ को match_phrase के लिए खोज कर स्कोर करें " जावा ", अगर यह मैच_फ्रेज" एडोब क्रिएटिव सूट "भी शामिल है, तो अतिरिक्त बूस्टिंग, फिर नेस्टेड वेल्यू की जांच करें जहां हमें" स्किल्स "में एक हिट मिलती है कि यह देखने के लिए कि" स्रोत "किस प्रकार से आया है। फिर स्रोत को स्रोत, या नेस्टेड ऑब्जेक्ट के स्रोत के आधार पर क्वेरी को बढ़ावा दें।
इस तरह के काम करता है, कम से कम मुझे कोई त्रुटि नहीं मिलती, लेकिन अंतिम स्कोर अजीब है और इसकी कठिनाई है देखिए कि उसके काम क्या है अगर मैं एक छोटे से बढ़ावा देता हूं, तो कहें कि 2, स्कोर थोड़ा नीचे जाता है, इस समय मेरा शीर्ष हिट 32.176407 के स्कोर के साथ 32.176407 का स्कोर है। 5 की वृद्धि के साथ यह 31.637703 पर चला जाता है मुझे उम्मीद है कि यह ऊपर जाना चाहिए, नीचे नहीं? 1000 की वृद्धि के साथ, स्कोर 2.433376 तक चला जाता है।
क्या यह करने का सही तरीका है, या क्या कोई बेहतर / आसान तरीका है? मैं संरचना और मैपिंग आदि बदल सकता हूं और मेरा स्कोर कम क्यों है?
संपादित करें: मैंने एक प्रश्न को सरल किया है, केवल एक "कौशल" से निपटना: दस्तावेज़ 1 के लिए क्वेरी स्पष्टीकरण से:
" मूल्य ": 3.82485," विवरण ":" 0 से 125 तक के लिए बच्चे डॉक्टर सीमा पर आधारित स्कोर " और डॉक्टर दो के लिए:
" मान " : 2.1993546, "विवरण": "0 से 125 तक बाल डॉक्टर सीमा पर आधारित स्कोर" इन मूल्यों में केवल अलग हैं, और मैं क्यों नहीं देख सकता। < / Div>
मैं बढ़ावा देने के बारे में सवाल का जवाब नहीं दे सकता, लेकिन सूचकांक पर आपके पास कितने शर्ड हैं? टीएफ और आईडीएफ की प्रति सूचकांक प्रति गणना नहीं की जाती है और यह स्कोर में अंतर पैदा कर सकता है। ।
यदि आप केवल 1 शर्ड के साथ रींडेक्स परिणाम बदलते हैं?
संपादित करें: इसके अलावा, डॉक्टर श्रेणी प्रत्येक दस्तावेज़ के लिए दाँत की श्रेणी में है और आप इसका उपयोग कर सकते हैं स्कोर को सत्यापित करने के लिए प्रत्येक दस्तावेज़ के लिए आईडीएफ की गणना करने के लिए।
Comments
Post a Comment