8.4Solr API使用(Result Grouping分組查詢)
轉載請出自出處:http://eksliang.iteye.com/blog/2169458
一、概述
分組統計查詢不同於分組統計(Facet),facet只是簡單統計記錄數,並不能為每組數據返回實際的數據回來,solr提供的grouping查詢能夠解決這一問題,也就是說,他除了能分組外,還能把每組數據返回來。
二、語法簡介
參考實例一
查詢參數如下:
q=*:* &group=true &group.field=price
返回結果如下:
Solr Grouping參數列表
參數 |
參數含義 |
group |
(true/false) 是否開啟分組查詢 |
group.field |
group字段,通過在請求中加入group.field參數加以聲明,如果需要對多個字段進行group by,那麽該參數可以聲明多次 |
group.query |
可以對任意條件進行分組統計查詢 |
group.limit |
返回的數據的條目,默認為1 3 |
group.offset |
偏移量,跟上面的group.limit一起可以達到分頁的效果 |
group.sort |
排序 |
group.main |
(true/false)等於true,將只返回最後一個group.query查詢的分組數據,一定是最後一個group.query,如果最後的條件是group.field,也沒有效果,同時其他分組統計條件都會失去作用 |
三、參考實例
參考實例一:group.field多個字段同時一起做分組統計查詢演示,查詢參數如下所示
q=*:* &group=true &group.field=price &group.field=brand &rows=2
返回結果如下所示:
參考實例二:group.query自定義條件統計演示,請求參數如下所示
q=*:* &group=true &group.query=price:[0 TO 3000] &group.query=price:[2000 TO *] &group.limit=2
返回結果如下所示:
參考實例三:group.main參數演示,請求參數如下所示
q=*:* &group=true &group.query=price:[0 TO 3000] &group.query=price:[2000 TO *] &group.field=price &group.main=true
返回結果如下所示:
參考實例四:group.main參數演示,請求參數如下所示
q=*:* &group=true &group.field=price &group.main=true &rows=1
返回結果如下所示,可以看到其他group統計條件都會失去作用因為加了group.main=true
<response> <lst name="responseHeader"> <int name="status">0</int> <int name="QTime">2</int> <lst name="params"> <str name="q">*:*</str> <str name="group.field">price</str> <str name="group.main">true</str> <str name="group">true</str> <str name="rows">1</str> </lst> </lst> <result name="response" numFound="9" start="0"> <doc> <str name="id">a001</str> <str name="brand">聯想</str> <float name="price">1100.0</float> <date name="birthday">2014-11-06T09:15:00Z</date> <str name="remark">聯想A001</str> <long name="_version_">1487193657358417920</long> </doc> </result> </response>
8.4Solr API使用(Result Grouping分組查詢)