1. 程式人生 > >8.4Solr API使用(Result Grouping分組查詢)

8.4Solr API使用(Result Grouping分組查詢)

src adding offset resp iteye status jpg pan border

轉載請出自出處: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分組查詢)