2010-05-20 14 views
11

क्या वे एक निश्चित स्कोर थ्रेसहोल्ड से नीचे गिरते हैं तो परिणाम फ़िल्टर करने के लिए सोलर/ल्यूसीन में अंतर्निहित कार्यक्षमताएं हैं? मान लें कि अगर मैं .2 का स्कोर थ्रेसहोल्ड प्रदान करता हूं, तो मेरे परिणामों से .2 से कम स्कोर वाले सभी दस्तावेज़ हटा दिए जाएंगे। मेरा अंतर्ज्ञान यह है कि यह सोलर या ल्यूसीन को अद्यतन/अनुकूलित करके संभव है।सोलर/लुसेन में एक निश्चित स्कोर थ्रेसहोल्ड के नीचे परिणाम निकालें?

क्या आप मुझे यह करने के तरीके पर सही दिशा में इंगित कर सकते हैं?

अग्रिम धन्यवाद!

+3

साइमन का उत्तर सही है। लेकिन ध्यान रखें कि समाज रिश्तेदार हैं और इसलिए परिणामों की "भलाई" के लिए सीमा तय करना मुश्किल है। –

उत्तर

7

आप अपना खुद का कलेक्टर लिख सकते हैं जो उन दस्तावेजों को इकट्ठा करने से अनदेखा कर देगा जो स्कोरर आपके थ्रेसहोल्ड के नीचे स्थित हैं। नीचे Lucene.Net 2.9.1.2 और C# का उपयोग करके इसका एक सरल उदाहरण है। यदि आप गणना स्कोर रखना चाहते हैं तो आपको उदाहरण को संशोधित करने की आवश्यकता होगी।

using System; 
using System.Collections.Generic; 
using Lucene.Net.Index; 
using Lucene.Net.Search; 

public class ScoreLimitingCollector : Collector { 
    private readonly Single _lowerInclusiveScore; 
    private readonly List<Int32> _docIds = new List<Int32>(); 
    private Scorer _scorer; 
    private Int32 _docBase; 

    public IEnumerable<Int32> DocumentIds { 
     get { return _docIds; } 
    } 

    public ScoreLimitingCollector(Single lowerInclusiveScore) { 
     _lowerInclusiveScore = lowerInclusiveScore; 
    } 

    public override void SetScorer(Scorer scorer) { 
     _scorer = scorer; 
    } 

    public override void Collect(Int32 doc) { 
     var score = _scorer.Score(); 
     if (_lowerInclusiveScore <= score) 
      _docIds.Add(_docBase + doc); 
    } 

    public override void SetNextReader(IndexReader reader, Int32 docBase) { 
     _docBase = docBase; 
    } 

    public override bool AcceptsDocsOutOfOrder() { 
     return true; 
    } 
} 
+0

धन्यवाद साइमन। इसने वास्तव में मुझे इसे कार्यान्वित करने के तरीके पर बहुत बेहतर समझ दी। @Shashikant - आपके विचार साझा करने के लिए भी धन्यवाद। में इसे याद रखूंगा। मैं थ्रेसहोल्ड को सेट करने में बस अधिक सतर्क रहूंगा ताकि प्रासंगिक परिणाम फ़िल्टर करने के लिए एक छोटा सा मौका मिलेगा। – snickernet

4

इसे सामान्यीकृत स्कोर (Scores As Percentages) कहा जाता है।

आपको लगता है कि प्राप्त करने के लिए निम्नलिखित निम्न पैरामीटर का उपयोग कर सकते हैं:

ns = {!func}product(scale(product(query({!type=edismax v=$q}),1),0,1),100) 
fq = {!frange l=20}$ns 

कहाँ 20 अपने 20% सीमा है।

संबंधित: how do I normalise a solr/lucene score?


मैं यह कर की सिफारिश नहीं करेंगे क्योंकि Lucene में पूर्ण स्कोर मूल्यों सार्थक (जैसे स्कोर खोजों में सीधे तुलना नहीं की जा) नहीं हैं। उच्चतम स्कोर पर स्कोर का अनुपात सार्थक है, लेकिन उच्चतम स्कोर के लिए कोई पूर्ण अंशांकन नहीं है, कम से कम वर्तमान में, इसलिए से निर्धारित करने का कोई तरीका नहीं है, परिणाम की गुणवत्ता क्या है सेट कुल मिलाकर है। वहाँ है कि चर्चा की गई है इसमें सुधार करने के लिए विभिन्न दृष्टिकोण (बनाने हैं स्कोर अधिक सीधे तुलनीय स्कोर में अतिरिक्त जानकारी के एन्कोडिंग और शायद सामान्य के लिए उपयोग कर कि, या बेहतर, एक उद्देश्य यह है कि अनेक प्रकार की शामिल करने के लिए स्कोर सामान्यीकरण द्वारा जानकारी; उदाहरण के लिए शीर्ष द्वारा मिलान की गई क्वेरी शर्तों की कुल संख्या परिणाम यदि आप डिफ़ॉल्ट का उपयोग कर रहे हैं या काफी उपयोगी होंगे)। में से कोई भी इन विचारों को अभी तक लागू नहीं किया गया है, जहां तक ​​मुझे पता है। - @Chuck

स्रोत: RE: Limiting Hits with a score threshold

संबंधित: Re: A question about scoring function in Lucene

0

बस एक किसी के लिए अद्यतन जो यहाँ ठोकर - एक EarlyTerminatingSortCollector Lucene द्वारा प्रदान की गई है और एक कस्टम कलेक्टर होने की जरूरत नहीं है इसके लिए अब बनाया गया है। दिए गए कार्य को प्राप्त करने के लिए इसे TopDocsCollector (ओपी के विशिष्ट मामले में, TopScoreDocCollector) पर लपेटें।

EarlyTerminatingSortCollector

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

TopDocsCollector

एक आधार वर्ग सभी कलेक्टरों कि एक TopDocs उत्पादन लौटने के लिए। यह संग्राहक एक एकल कन्स्ट्रक्टर प्रदान करके आसान विस्तार की अनुमति देता है जो प्राथमिकता क्यूई के साथ-साथ उस प्राथमिकता कतार के लिए संरक्षित सदस्यों को स्वीकार करता है और कुल हिट की संख्या का काउंटर देता है।

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