c# - Lucene - 搜索数值字段

标签 c# search lucene lucene.net

好的,我在过去两个小时内搜索了这个,结果只提供了提示, 甚至没有一个完整的代码来拯救(如果菜鸟看不到一些样本,他们将如何学习?)

我创建了一个这样的索引:

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

现在,我想搜索值等于 0 的字段 ID(以获取我在那里的单个记录)...

但是,像这样的简单搜索:

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,因此很想看看是否还有更好的方法。

关于c# - Lucene - 搜索数值字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7866376/

相关文章:

c# - 即使应用程序关闭后,让我的计数器分数保存最高分

mysql - 想建立一个拥有 70 亿关键字的数据库 - 需要指导

lucene - Lucene 搜索的复杂性

java - 如何在我的 Lucene 应用程序中使用 ASCIIFoldingFilter?

c# - 在 C# 中杀死一个任务

c# - 转换成 "object"类型的目的是什么?

c# - 如何在 Emacs 中的 Ubuntu 编辑上编译 C#?

search - PyroCMS 有搜索功能吗?

Azure 搜索 - 多对多索引

javascript - 如何在使用 Algolia 每 4 次点击后添加一个 clearfix div?