如何在C#中对Lucene.net中的结果进行排序?

时间:2011-06-27 06:27:16

标签: c# lucene.net

我正在为lucene添加特殊枚举以用于相关搜索。我如何对具有特定枚举值的结果进行排序。

假设我添加了Poor moderate Best,我需要在结果中获得最佳结果,然后我将如何在Lucene.net中执行此操作。

在Lucene.net中以任何方式执行此操作

2 个答案:

答案 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