[英]Solr counts by category
假设我在各种类别的solr数据库中有一堆记录:产品,页面等。有没有办法计算,所以我可以显示总匹配与总类别。
就像是:
你搜索了“早餐”
网页匹配早餐: 五百分之三十七产品匹配早餐:100分之7
等等。
奖励积分,如果我可以通过某种结构得到这个我可以循环,这个伪代码:
print "You searched for %s\n" % term
for category, match_count, total_count in categories:
print "%ss matching %s: %d/%d\n" % (category, match_count, total_count)
这与语言无关,我计划直接使用GET请求访问solr索引,而不是使用任何API。
Schema (3个字段,所有类型字符串(solr.StrField)):
输入数据 :
指数 :
我们可以使用分面来计算特定结果:
搜索查询(搜索所有文档):
Q = *:*
过滤查询(过滤特定输入请求并使用标记对其进行标记):
&FQ = {标题标签= DT!}:早餐
刻面:
打开刻面
&小=真
如果只需要类别信息,请关闭结果
&行= 0
获得匹配计数
&facet.field =类别
获取总计数(除了提供的filterQuery之外的每个类别的计数)
&facet.field = {!ex = dt key = total_category}类别
最终查询将如下所示:
http://localhost:8983/solr/stack19733827/select?q=*%3A*&fq=%7B!tag%3Ddt%7Dtitle%3Abreakfast&rows=0&wt=xml&indent=true&facet=true&facet.field=category&facet.field={!ex=dt%20key=total_category}category
这里有一个示例响应,其中也包含请求:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">1</int>
<lst name="params">
<str name="q">*:*</str>
<arr name="facet.field">
<str>category</str>
<str>{!ex=dt key=total_category}category</str>
</arr>
<str name="indent">true</str>
<str name="fq">{!tag=dt}title:breakfast</str>
<str name="rows">0</str>
<str name="wt">xml</str>
<str name="facet">true</str>
<str name="_">1383337530565</str>
</lst>
</lst>
<result name="response" numFound="262" start="0">
</result>
<lst name="facet_counts">
<lst name="facet_queries"/>
<lst name="facet_fields">
<lst name="category">
<int name="other">75</int>
<int name="page">65</int>
<int name="product">62</int>
<int name="post">60</int>
</lst>
<lst name="total_category">
<int name="other">260</int>
<int name="product">253</int>
<int name="page">250</int>
<int name="post">237</int>
</lst>
</lst>
<lst name="facet_dates"/>
<lst name="facet_ranges"/>
</lst>
</response>
它包含方面所需的信息:
奖金:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.