如何检索Lucene中得分较高的所有文档

如何检索Lucene中得分较高的所有文档,lucene,lucene.net,Lucene,Lucene.net,对于一种特定的查询类型,我会得到许多具有相同最高分数的文档。每次调用此查询时,我想随机抽取10个文档。因此,进行相同搜索的用户每次都会得到不同的结果。这听起来确实是个糟糕的主意,但实际上是有商业意义的 我现在的想法是从索引中获取所有得分最高的文档,然后从中随机抽取10个 我该怎么做?还有别的办法吗 请注意,我仍然希望高分保持在榜首,只是洗牌。我不想在洗牌中包括较低的分数,也不想将他们排除在列表的底部 非常感谢 Solr/Lucene提供了一个可用于对文档进行随机排序的方法。 由于您对所有文档的分

对于一种特定的查询类型,我会得到许多具有相同最高分数的文档。每次调用此查询时,我想随机抽取10个文档。因此,进行相同搜索的用户每次都会得到不同的结果。这听起来确实是个糟糕的主意,但实际上是有商业意义的

我现在的想法是从索引中获取所有得分最高的文档,然后从中随机抽取10个

我该怎么做?还有别的办法吗

请注意,我仍然希望高分保持在榜首,只是洗牌。我不想在洗牌中包括较低的分数,也不想将他们排除在列表的底部

非常感谢

Solr/Lucene提供了一个可用于对文档进行随机排序的方法。
由于您对所有文档的分数相同,因此将对其进行随机排序

<fieldType name="random" class="solr.RandomSortField" />

<dynamicField name="random*" type="random" indexed="true" stored="false"/>

您可以使用例如
sort=random_1234 desc

生成随机数(例如1234)将始终返回新的文档集。 但是,相同的数字将生成相同的集合


检查lucene.net实现。

请参阅此链接(),了解如何使用
CustomScoreQuery
随机搜索结果,谢谢!不幸的是。这将使所有文档随机化。我只想在所有得分最高的文档中进行随机分组。@user277498您可以尝试随机分组10%左右,这样您就可以获得类似的效果(尽管不同),我不明白。随机10%是什么意思?@user277498假设原始分数是0.5,那么你可以随机添加或减去一个小于0.025的数字,得到一个介于0.475和0.525之间的新分数。我找不到Lucene等价物,如果有人知道,请分享。谢谢