[英]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.