2010-10-21 89 views
0

如何按随机顺序对结果进行排序。我的代码看起来是这样的时刻:Lucene.Net中的随机分类结果2.4

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

由于这是一个IEnumerable,你可以使用标准的LINQ to随机它。你可以找到一个例子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强的结果,而是随机的结果)。