簡體   English   中英

Lucene - 搜索數值字段

[英]Lucene - searching for a numeric value field

好吧,我在過去的兩個小時內搜索過這個結果只提供了一些提示,甚至沒有一個完整的代碼來幫助救援(如果他們看不到一些樣品,小便會怎么學?)

我創建了一個像這樣的索引:

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);

沒有結果。 我已經閱讀了NumericRangeKeywordAnalyzer等等,但由於它們都沒有提供樣本我無法弄清楚如何去做。

請親切的人,給我一個如何使這件事工作的例子。

我使用NumericField和NumericRangeQuery來搜索Lucene索引的數字。

創建索引時:

  NumericField taxonRankSortOrder = new NumericField("TaxonRankSortOrder", Field.Store.YES, true);
  taxonRankSortOrder.SetIntValue(rank);
  document.Add(taxonRankSortOrder);

然后使用查詢:

  NumericRangeQuery query = NumericRangeQuery.NewIntRange("TaxonRankSortOrder", 3000, 3000, true, true);

將使用TaxonRankSortOrder等於3000返回所有文檔。

您必須自己創建查詢而不是使用QueryParser,因此我們希望看看是否有更好的方法。

改變Field.Index.NOField.Index.ANALYZED (或Field.Index.NOT_ANALYZED在ID字段)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM