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
-
<lstname="facet_counts">
-
<lstname="facet_queries"/>
-
<lstname="facet_fields"/>
-
<lstname="facet_dates"/>
-
<lstname="facet_ranges"/>
-
</lst>
-
facet_queries:代表自定義條件查詢facet,類似資料庫的count函式
-
facet_fields :代表根據欄位分組查詢,類似資料庫的groupby count的組合
-
facet_dates:根據日期區間分組查詢
-
facet_ranges:當然了,日期有區間,數字也有,這個就是根據數字分組查詢
說明:
facet的基本功能就是對搜尋結果中的資料進行分類。
facet用法
-
facet.field:指定要分類的欄位
-
facet=on 或 facet=true表示功能開啟
-
facet.prefix 表示欄位字首
-
facet.limit 表示返回的記錄數
-
facet.offict 表示從第幾條開始,主要用於分頁
-
facet.query可以任意定義查詢
Range Facet
一般用於date型別或數字型別的欄位。
-
&facet=on
-
&facet.query=date:[2009-1-1T0:0:0ZTO 2010-1-1T0:0:0Z]
引數說明
-
facet.range 需要做facet查詢的欄位
-
facet.range.start 設定起始點
-
facet.range.end 設定終止點
-
facet.range.gap 限定每一段範圍的區間差值
-
facet.range.hardend 指定如何處理最後一個區間
-
facet.range.include 指定如何處理臨界值
-
facet.range.other 指定如何處理限定範圍以為的結果
-
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個數/不重複值集合大小,可能不準確 | 所有 | 否 |
如下查詢:
分類: 搜尋引擎