如何以随机顺序对结果进行排序。我的代码目前看起来像这样:
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
答案 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个结果,而是随机化所有结果)。