ठीक है, मैंने पिछले दो घंटों में इसकी खोज की है जिसके परिणाम केवल केवल सुझाव हैं, और बचाव के लिए एक भी पूरा कोड नहीं है (अगर कोई कुछ नहीं देख पाता है तो नोबस कैसे सीखेंगे ? नमूने)ल्यूसीन - एक संख्यात्मक मूल्य फ़ील्ड के लिए खोज
मैं बहुत की तरह एक सूचकांक बनाया है:
Directory directory = FSDirectory.Open(new System.IO.DirectoryInfo(Server.MapPath("/data/channels/")));
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_29);
IndexWriter writer = new IndexWriter(directory, analyzer, true, Lucene.Net.Index.IndexWriter.MaxFieldLength.UNLIMITED);
Document doc = new Document();
doc.Add(new Field("ID", "0", Field.Store.YES, Field.Index.NO));
doc.Add(new Field("parentID", "0", Field.Store.YES, Field.Index.NO));
doc.Add(new Field("Title", "Root", Field.Store.YES, Field.Index.ANALYZED));
writer.AddDocument(doc);
writer.Optimize();
writer.Close();
अब, मैं क्षेत्र ID
लिए खोज करना चाहते कहाँ मूल्य 0
के बराबर होती है (एकल रिकॉर्ड मैं वहाँ है) प्राप्त करने के लिए ...
लेकिन, इस तरह की एक साधारण खोज:
Directory directory = FSDirectory.Open(new System.IO.DirectoryInfo(Server.MapPath("/data/channels")));
Analyzer analyzer = new Lucene.Net.Analysis.Standard.StandardAnalyzer(Version.LUCENE_29);
Searcher searcher = new Lucene.Net.Search.IndexSearcher(IndexReader.Open(directory, true));
Query query = new Lucene.Net.QueryParsers.QueryParser(Version.LUCENE_29, "ID", analyzer).Parse("0");
Hits hits = searcher.Search(query);
कोई परिणाम नहीं देता है। मैंने NumericRange
, KeywordAnalyzer
और कुछ और चीजें, पढ़ी हैं, लेकिन उनमें से कोई भी नमूना प्रदान नहीं करता है, इसलिए मैं यह नहीं समझ सकता कि इसे कैसे किया जाए।
कृपया, दयालु लोग, मुझे यह उदाहरण दें कि यह चीज़ कैसे काम करे।
यदि आप केवल एक int खोज रहे हैं, तो आपको सीमा से खोज करने की आवश्यकता नहीं है। बस इसका उपयोग करें: टर्मक्वायर क्वेरी = नया टर्मक्वायर (नया टर्म ("टैक्सन रैंकस्पोर्टऑर्डर", न्यूमेरिक यूटिल्स। इंंटोफ्रिक्सिक्स (3000)); –