我正在努力解决一个小问题,我必须显示从SolR返回的结果集的相关信息,但无法计算如何计算它而不迭代结果(坏)。
基本上我用state
字段存储我的文档,而搜索应该返回所有文档,UI必须显示"找到15个实体,5个处于状态A,状态B为3,C" 为8。
目前我正在使用一种相当脆弱的方法来运行查询3次,并按类型添加其他范围,但我宁愿从我正在显示的一个查询中获取该信息。 (有一些边缘情况,数字不会加起来,因为SolR可以返回方面,我想在这种情况下必须有一种方法来使用该功能)
我正在使用Rails的SolR 3.5和sunspot gem
答案 0 :(得分:1)
正如您自己提到的那样,您可以通过设置
来使用facetfacet=true&facet.field=state
我不太熟悉太阳黑子宝石,但通过查看你可以使用的documentation 像这样的方面(假设实体是你的可搜索的):
Entity.search do:
facet :state
end
这应该返回查询返回的所有实体的状态,其中包含处于此状态的实体数。太阳黑子documentation告诉我你可以通过以下方式阅读这些方面:
search.facet(:state).rows.each do |facet|
puts "State #{facet.value} has #{facet.count} entities"
end
答案 1 :(得分:0)
基本上,您可以使用三组主要功能从solr获取统计数据。
首先是分面:
http://wiki.apache.org/solr/SimpleFacetParameters
还有分组(字段折叠):
https://wiki.apache.org/solr/FieldCollapsing
统计数据包:
https://cwiki.apache.org/confluence/display/solr/The+Stats+Component
尽管统计数据,facet和group可能被称为olap的分析包替换,该解析包旨在用于solr V 5.0.0:
https://issues.apache.org/jira/browse/SOLR-5302