如何在Solr中统一记录记录?

时间:2015-07-09 23:52:12

标签: solr lucene

在Solr中采样记录的最佳方法是什么?

假设我有一个返回1000000条记录的查询,我想从这些记录中统一获取10个样本。在Solr查询中执行此操作的最合适方法是什么?

3 个答案:

答案 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查询中的分面的更多信息,请阅读以下链接。

https://cwiki.apache.org/confluence/display/solr/Faceting

答案 2 :(得分:0)

在具有Streaming Expressions支持的Solr中,您可以使用https://lucene.apache.org/solr/guide/7_2/stream-source-reference.html#random在集合中进行随机采样。但是,您仍然需要对随机字段进行索引。