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

时间:2011-10-26 05:40:51

标签: lucene lucene.net

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

我现在的想法是从索引中获取具有最高分的所有文档,然后从这些文档中随机选择10。

我该怎么做?还有另一种方式吗?

请注意,我仍然希望最高分保持在最高分,只是洗牌。我不想在洗牌中包含较低分数,也不要将它们排除在列表底部。

非常感谢!

2 个答案:

答案 0 :(得分:0)

Solr / Lucene提供random sort field,您可以随机对文档进行排序 由于您所有文件的分数相同,它们将被随机分类。

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

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

你可以用例如它们对它们进行排序sort=random_1234 desc
生成随机数,例如1234将始终返回新的文档集。 但是,相同的数字将生成相同的集合。

检查lucene.net实现。

答案 1 :(得分:0)

请参阅此链接(“Shuffling” a Lucene Hits result set),了解如何使用CustomScoreQuery随机化搜索结果。