2010-10-21 8 views
0

Comment trier mes résultats dans un ordre aléatoire. mon code ressemble à ceci au moment:Résultats du tri aléatoire dans 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 

Répondre

0

Puisque c'est un IEnumerable, vous pouvez utiliser LINQ standard pour randomiser il. Vous trouverez un exemple here:

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

Si vous voulez faire à l'intérieur de Lucene lui-même, vous pouvez make your own sorter (bien qu'il faille noter que vous ne serez plus randomisation les 100 premiers résultats, mais randomiser plutôt tous les résultats).