नीचे दिया गया कोड ल्यूसीन इन एक्शन बुक (मूल रूप से जावा में) से है। यह खोज परिणामों को फ़िल्टर करने के लिए 'अनुमत' दस्तावेज़ों (उपयोगकर्ता अनुमति बिंदु से) की एक सूची बनाने के लिए है। समस्या शब्द है Docs.Read() विधि संदर्भ द्वारा पारित होने के लिए 'doc' और 'freq' arrays को स्वीकार नहीं करती है, इसलिए बिट सरणी में बिट सेट करने के लिए वे अभी भी खाली हैं।आप Lucene.net के साथ एक कस्टम फ़िल्टर कैसे कार्यान्वित करते हैं?
क्या कोई मदद कर सकता है, लुसीन कस्टम फ़िल्टर (विशेष रूप से .net) का उपयोग करने के उदाहरण जमीन पर पतले लगते हैं। धन्यवाद।
public class LuceneCustomFilter : Lucene.Net.Search.Filter
{
string[] _luceneIds;
public LuceneCustomFilter(string[] luceneIds)
{
_luceneIds = luceneIds;
}
public override BitArray Bits(Lucene.Net.Index.IndexReader indexReader)
{
BitArray bitarray = new BitArray(indexReader.MaxDoc());
int[] docs = new int[1];
int[] freq = new int[1];
for (int i = 0; i < _luceneIds.Length; i++)
{
if (!string.IsNullOrEmpty(_luceneIds[i]))
{
Lucene.Net.Index.TermDocs termDocs = indexReader.TermDocs(
new Lucene.Net.Index.Term(@"luceneId", _luceneIds[i]));
int count = termDocs.Read(docs, freq);
if (count == 1)
{
bitarray.Set(docs[0], true);
}
}
}
return bitarray;
}
}
मैं Lucene.net 2.0.0.4 का उपयोग कर रहा है, लेकिन TermDocs इंटरफ़ेस अभी भी नवीनतम शाखा यहाँ में एक ही प्रतीत होता है: https://svn.apache.org/repos/asf/incubator/lucene.net/trunk/C%23/src/Lucene.Net/Index/TermDocs.cs
शानदार, आपकी मदद डारिन के लिए धन्यवाद। – Nick