Solr分組聚合查詢之Facet
阿新 • • 發佈:2019-01-27
摘要: 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。