随机排序结果Lucene.Net 2.4

时间:2010-10-21 18:39:24

标签: asp.net sorting lucene lucene.net

如何以随机顺序对结果进行排序。我的代码目前看起来像这样:

Dim searcher As IndexSearcher = New IndexSearcher(dir, True)
Dim collector As TopScoreDocCollector = TopScoreDocCollector.create(100, True)
searcher.Search(query, collector)
Dim hits() As ScoreDoc = collector.TopDocs.scoreDocs

For Each sDoc As ScoreDoc In hits
    'get doc and return
Next

1 个答案:

答案 0 :(得分:0)

由于这是一个IEnumerable,您可以使用标准linq随机化它。您可以找到示例here

public static IEnumerable<T> Randomize<T>(this IEnumerable<T> source)
{
   Random rnd = new Random();
   return source.OrderBy<T, int>((item) => rnd.Next());
}

如果你想在Lucene内部这样做,你可以make your own sorter(虽然请注意你将不再随机化前100个结果,而是随机化所有结果)。