Solr Group/Field Collapsing(パケットクエリ)


Solr Group/Field Collapsing(パケットクエリ)
転載は出典:http://eksliang.iteye.com/blog/2169458
http://eksliang.iteye.com/
一、概説
パケット統計クエリーはパケット統計(Facet)とは異なり、facetは単純な統計記録数であり、各グループのデータに実際のデータを返すことはできない.solrが提供するgroupingクエリーはこの問題を解決することができる.つまり、彼はグループ化できるほか、各グループのデータを返すことができる.
 
二、文法の紹介
参考例1
クエリー・パラメータは次のとおりです.
q=*:*
 &group=true
 &group.field=price

結果は次のとおりです.
Solr Grouping / Field Collapsing(分组查询) Solr Groupパラメータリスト
パラメータ
パラメータの意味
group
(true/false)パケットクエリーを開くかどうか
group.field
groupフィールドは、リクエストにgroupを加える.fieldパラメータは、複数のフィールドをgroupbyする必要がある場合に宣言されます.このパラメータは、複数回宣言できます.
group.query
任意の条件をグループ化してクエリーを統計できます
group.limit
返されるデータのエントリ、デフォルトは1 3です.
group.offset
オフセット量、上のグループについて.limitは一緒にページングの効果を達成できます
group.sort
ツールバーの
group.main
(true/false)はtrueに等しく、最後のグループのみが返されます.queryクエリのパケットデータは、必ず最後のグループです.最後の条件がgroupならフィールドも効果がなく、他のパケット統計条件も機能しません.
       
三、参考例
例1:group.field複数のフィールドは同時にグループ統計クエリーのプレゼンテーションを行い、クエリーパラメータは以下のようになります.
q=*:*
&group=true
&group.field=price
&group.field=brand
&rows=2

結果は次のとおりです.
Solr Grouping / Field Collapsing(分组查询)  
例2:group.queryカスタム条件統計プレゼンテーション、リクエストパラメータを以下に示します.
q=*:*
  &group=true
  &group.query=price:[0 TO 3000]
  &group.query=price:[2000 TO *]
  &group.limit=2

結果は次のとおりです.
Solr Grouping / Field Collapsing(分组查询)  
例3:group.mainパラメータのデモ、リクエストパラメータは以下の通りです
q=*:*
&group=true
&group.query=price:[0 TO 3000]
&group.query=price:[2000 TO *]
&group.field=price
&group.main=true

結果は次のとおりです.
Solr Grouping / Field Collapsing(分组查询)  
例4: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>