簡體   English   中英

Solr按類別計算

[英]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)):

  • ID
  • 標題
  • 類別

輸入數據

  • 4類別 - 產品,頁面,帖子,其他
  • 4個標題 - 早餐,午餐,晚餐,晚餐

指數

  • 1000個隨機標題/類別的文件

請求

我們可以使用分來計算特定結果:

  • 搜索查詢(搜索所有文檔):

    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>

它包含方面所需的信息:

  • total_category - 類別中的文檔總數
  • category - 與篩選器查詢匹配的類別中的文檔數
  • 小面的名稱 -類的名稱

獎金:

  • 標題中的早餐總數匹配 - 所有類別中的262

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM