1. 程式人生 > >Solr聚合查詢(stats=true&stats.field=yxxwCount&rows=0&indent=true)

Solr聚合查詢(stats=true&stats.field=yxxwCount&rows=0&indent=true)

例子:彙總yxxwCount欄位的總數

1  分組查詢

概述:Solr常用的分組查詢有兩種,Facet分組和Group分組,分別以下列出這兩種查詢:

1.1     Facet分組

solr種以導航為目的的查詢結果成為facet,在使用者查詢的結果上根據分類增加了count資訊,然後使用者根據count資訊做進一步搜尋,

 Facet是solr的高階搜尋功能之一,可以給使用者提供更友好的搜尋體驗.在搜尋關鍵字的同時,能夠按照Facet的欄位進行分組並統計。

Solr Fact提供了4種類型的Fact

  1. <lstname="facet_counts">

  2. <lstname="facet_queries"/>

  3. <lstname="facet_fields"/>

  4. <lstname="facet_dates"/>

  5. <lstname="facet_ranges"/>

  6. </lst>

  7. facet_queries:代表自定義條件查詢facet,類似資料庫的count函式

  8. facet_fields :代表根據欄位分組查詢,類似資料庫的groupby count的組合

  9. facet_dates:根據日期區間分組查詢

  10. facet_ranges:當然了,日期有區間,數字也有,這個就是根據數字分組查詢

說明:

facet的基本功能就是對搜尋結果中的資料進行分類。

facet用法

  1. facet.field:指定要分類的欄位

  2. facet=on 或 facet=true表示功能開啟

  3. facet.prefix 表示欄位字首

  4. facet.limit 表示返回的記錄數

  5. facet.offict 表示從第幾條開始,主要用於分頁

  6. facet.query可以任意定義查詢

Range Facet

一般用於date型別或數字型別的欄位。

  1. &facet=on

  2. &facet.query=date:[2009-1-1T0:0:0ZTO 2010-1-1T0:0:0Z]

引數說明

  1. facet.range 需要做facet查詢的欄位

  2. facet.range.start 設定起始點

  3. facet.range.end 設定終止點

  4. facet.range.gap 限定每一段範圍的區間差值

  5. facet.range.hardend 指定如何處理最後一個區間

  6. facet.range.include 指定如何處理臨界值

  7. facet.range.other 指定如何處理限定範圍以為的結果

  8. facet.range.method 指定facet演算法

如下查詢:

http://localhost:8983/solr/solr_select/query?q=*:*&facet=on&facet.field=name

根據name欄位分組查詢結果

1.2     Group分組

Solr對結果的分組處理除了facet還可以使用group。Solr的group是根據某一欄位對結果分組,將每一組內滿足查詢的結果按順序返回。

Group對比Facet

Group和Facet的概念很像,都是用來分組。Facet返回所有相關的結果並允許使用者基於facet的目錄重新定義結果集。Facet可以對分組數量進行過濾,以及排序,和日期範圍,時間範圍分組,但是如果你想得到具體的資料,還得需要查詢一次或多次。group可以得到分組的組數量,一次請求,可以拿到所有的資料。

Group和Facet可以結合起來使用,但只能使用facet.field和facet.range,還不支援日期date和維度統計pivot faceting.

如下查詢:

http://localhost:8983/solr/solr_select/query?q=*:*&group=true&group.field=name

引數說明:

引數 型別 說明
group 布林值 設為true,表示結果需要分組
group.field 字串 需要分組的欄位,欄位型別需要時是StrField或TextField
group.func 查詢語句 可以指定查詢函式
group.query 查詢語句 可以指定查詢語句
rows 整數 返回多少組結果,預設10
start 整數 指定結果開始位置/偏移量
group.limit 整數 每組返回多數條結果,預設1
group.offset 整數 指定每組結果開始位置/偏移量
sort 排序演算法 控制各個組的返回順序
group.sort 排序演算法 控制每一分組內部的順序
group.format grouped/simple 設定為simple可以使得結果以單一列表形式返回
group.main 布林值 設為true時,結果將主要由第一個欄位的分組命令決定
group.ngroups 布林值 設為true時,Solr將返回分組數量,預設fasle
group.truncate 布林值 設為true時,facet數量將基於group分組中匹相關性高的文件,預設fasle
group.cache.percent 整數0-100 設為大於0時,表示快取結果,預設為0。該項對於布林查詢,萬用字元查詢,模糊查詢有改善,卻會減慢普通詞查詢。

2      Stats Component聚合查詢

摘要: Solr可以利用StatsComponent實現對數字、字串或日期欄位的聚合統計查詢,即:min、max、avg、count、sum的功能

Stats Component引數說明:

引數 描述
stats 布林值,設為true,表示開啟Stats Component
stats.field 指定需要做統計的欄位
stats.facet 對指定的facet生成一個子結果集
stats.calcdistinct 布林值,將會返回”countDistinct”和”distinctValues”,其代價很高。預設fasle

stats Component統計內容

統計專案 描述 支援的型別 是否預設輸出
min 最小值 所有
max 最大值 所有
sum 數字、日期
count 個數 所有
missing 空值的個數 所有
sumOfSquares 平方和 數字、日期
mean 均值 數字、日期
stddev 標準差 數字、日期
percentiles 精度/小數點後幾位 數字
distinctValues set/不重複值集合 所有
countDistinct set精確個數/不重複值集合大小,使用代價很大 所有
cardinality set個數/不重複值集合大小,可能不準確 所有

如下查詢:

分類: 搜尋引擎