好吧,我在过去两个小时内搜索了这个结果,只给出了提示, ,甚至没有一个完整的代码来救援(如果noobs不能看到一些?样品)Lucene - 搜索数值字段
我创建了一个索引,如下所示:
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,你不需要按范围搜索。简单地使用这个: TermQuery query = new TermQuery(new Term(“TaxonRankSortOrder”,NumericUtils.IntToPrefixCoded(3000))); –