代码之家  ›  专栏  ›  技术社区  ›  Josh

Lucene.Net 2.4中的随机排序结果

  •  0
  • Josh  · 技术社区  · 14 年前

    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 回复  |  直到 14 年前
        1
  •  0
  •   Xodarap    14 年前

    因为这是一个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());
    }
    

    make your own sorter (尽管注意,您将不再随机化前100个结果,而是随机化所有结果)。