显示有关SolR搜索结果的信息

显示有关SolR搜索结果的信息,solr,lucene,full-text-search,Solr,Lucene,Full Text Search,我正在努力解决一个小问题:我必须显示从SolR返回的resultset的相关信息,但在不迭代结果的情况下无法计算它(糟糕) 基本上,我用一个状态字段来存储我的文档,虽然搜索应该返回所有文档,但UI必须显示“找到了15个实体,5个处于状态a,3个处于状态B,8个处于状态C” 目前,我正在使用一种相当脆弱的方法来运行查询3次,并按类型进行额外的范围划分,但我更希望从我正在显示的一个查询中获得这些信息。(在一些边缘情况下,数字不相加,因为SolR可以返回facet,所以我想在这种情况下必须有一种使用该

我正在努力解决一个小问题:我必须显示从SolR返回的resultset的相关信息,但在不迭代结果的情况下无法计算它(糟糕)

基本上,我用一个
状态
字段来存储我的文档,虽然搜索应该返回所有文档,但UI必须显示“找到了15个实体,5个处于状态a,3个处于状态B,8个处于状态C”

目前,我正在使用一种相当脆弱的方法来运行查询3次,并按类型进行额外的范围划分,但我更希望从我正在显示的一个查询中获得这些信息。(在一些边缘情况下,数字不相加,因为SolR可以返回facet,所以我想在这种情况下必须有一种使用该功能的方法)


我使用的是来自Rails和gem的Solr3.5,正如您提到的,您可以通过设置

facet=true&facet.field=state
我对太阳黑子宝石不太熟悉,但通过观察你可以使用 这样的方面(假设实体是可搜索的):

这将返回查询返回的所有实体的状态以及处于该状态的实体数。太阳黑子告诉我,你可以通过以下方式解读这些方面:

search.facet(:state).rows.each do |facet|
  puts "State #{facet.value} has #{facet.count} entities"
end

从本质上讲,有三组主要的函数可以用来从solr获取统计数据

第一个是刻面:

还有分组(字段折叠):

以及统计数据包:

尽管stats、facet和group可能会被称为olap的分析包所取代,该分析包的目标是solrv5.0.0:


祝你好运。

非常感谢!这正是我想要的。
search.facet(:state).rows.each do |facet|
  puts "State #{facet.value} has #{facet.count} entities"
end