1. 程式人生 > >Solr分組聚合查詢之Facet

Solr分組聚合查詢之Facet

摘要: Solr的分組聚合是一個籠統的概念,目的就是把查詢結果做分類,有多種方式可以做到很類似的結果。也正是由於它們的不同表現,可以適合於多種場景。

何為Facet

Facet是一種手段,用來將搜尋結果分類,它並不會修改查詢結果資訊,只是給分類後的結果加上了每一項的數量值。我們可以用facet來做導航欄,引導使用者更精確地查詢資訊。

一般引數

引數 說明
facet 布林值,設定為true,表示開啟facet
facet.query 指定查詢語句

facet

布林值,預設為空,只有設定為true,其他的facet引數才能生效。

facet.query

該引數允許你指定任意一個滿足Luence語法的查詢語句。預設情況下,Solr會自動判斷如何分類。通過facet.query可以覆蓋預設行為並指定分類策略。可以使用facet.query多次,以指定不同的查詢語句。

Facet種類

Solr的Facet有多種形式,它們的引數不盡相同。

Filed-Value Facet

可以用於Text或者String型別的欄位。

引數 說明
facet.field 需要做facet查詢的欄位,必須指定,否則其他引數無效
facet.sort 排序規則,可以是count(預設值,由大到小)或index(字典順序)
facet.limit 控制返回的數量,預設100
facet.missing 控制是否考慮沒有facet欄位,預設false

Range Facet

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

引數 說明
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演算法

Pivot Facet /Decision Tree Facet

Pivot可以理解為維度,Pivot Facet用來對錶中的資料排序,求和,平均等一系列操作,可以呈現出對facet結果的總結。此外,可以利用這一功能生成決策樹,告知你如何更好地利用生成的facet。