我正在为lucene添加特殊枚举以用于相关搜索。我如何对具有特定枚举值的结果进行排序。
假设我添加了Poor moderate Best,我需要在结果中获得最佳结果,然后我将如何在Lucene.net中执行此操作。
在Lucene.net中以任何方式执行此操作
答案 0 :(得分:8)
Lucene确实拥有自己的排序。查看命名空间Lucene.Net.Search.Sort
。下面是我按DateOfMessage排序的示例。
Lucene.Net.Search.TopDocsCollector collector = Lucene.Net.Search.TopScoreDocCollector.create(InternalMaxSearchResults, false); // default is relevance
var sortBy = new Lucene.Net.Search.Sort(new Lucene.Net.Search.SortField(SearchIndex.IndexFields.DateOfMessage.ToString(), Lucene.Net.Search.SortField.LONG, true));
collector = Lucene.Net.Search.TopFieldCollector.create(
sortBy,
InternalMaxSearchResults, /* max 500 results */
false,
false,
false,
false);
break;
// search with the collector
searcher.Search(queryMain, collector);
答案 1 :(得分:1)
您可以使用“SimpleFacetedSearch”将结果分类为差,中等,最佳 https://cwiki.apache.org/confluence/display/LUCENENET/Simple+Faceted+Search