Solr Grouping / Field Collapsing(分組查詢)
轉載請出自出處: http://eksliang.iteye.com/blog/2169458
一、概述
? ? ? 分組統計查詢不同于分組統計(Facet),facet只是簡單統計記錄數,并不能為每組數據返回實際的數據回來,solr提供的grouping查詢能夠解決這一問題,也就是說,他除了能分組外,還能把每組數據返回來。
?
二、語法簡介
參考實例一
查詢參數如下:
q=*:* &group=true &group.field=price
?返回結果如下:
參數 | 參數含義 |
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>
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
