在Solr中采样记录的最佳方法是什么?
假设我有一个返回1000000条记录的查询,我想从这些记录中统一获取10个样本。在Solr查询中执行此操作的最合适方法是什么?
答案 0 :(得分:1)
实施a random
field in Solr,使用具有随机名称的动态字段按此字段排序,然后将搜索结果限制为返回十个文档。相同的索引版本和相同的字段名称将给出相同的结果,因此您还可以根据需要对数据集进行分页和探索。
<types>
...
<fieldType name="random" class="solr.RandomSortField" />
...
</types>
<fields>
...
<dynamicField name="random*" type="random" indexed="true" stored="false"/>
...
</fields>
然后,您可以使用随机名称(例如sort=random_12345678
)对此字段进行排序,并使用rows=10
限制文档数量。
答案 1 :(得分:0)
在这种情况下,Faceting会帮助你。
分面是根据索引术语将搜索结果安排到类别中。向搜索者提供索引术语,以及每个术语找到多少匹配文档的数字计数。通过分面,用户可以轻松浏览搜索结果,缩小搜索结果的范围。
要了解有关solr查询中的分面的更多信息,请阅读以下链接。
答案 2 :(得分:0)
在具有Streaming Expressions支持的Solr中,您可以使用https://lucene.apache.org/solr/guide/7_2/stream-source-reference.html#random在集合中进行随机采样。但是,您仍然需要对随机字段进行索引。