在搜索中,我們搜索時,通常會自動返回一些相關的搜索。比如,你搜索了一本書,會自動返回作者信息加上他的其它書籍的數量。這種功能在Solr中稱之為Facet。不太好翻譯。下面對於參數的說明,我以搜索“手機”為例子,比較好說明一點。其中一些屬性可能並不適用於中文。我的說明僅僅是舉個例子。搜索"手機"時,可能會返回的 facet 結果:
品牌 (20),類型(2),顏色(10)
說明:品牌,類型,顏色就是所說的facet,后面括號里表示數量。品牌(20):有20個品牌。 類型(2):表示有2種類型(智能機和老人機)
參數 | 描述 |
facet | 為TRUE時,啟用該功能 |
facet.query | 默認情況下,Solr會自動Facet的field並返回其相關的計數結果 。指定Lucene語法的查詢語句,可以覆蓋默認行為。 |
facet.field | 指定作為facet的field。比如“品牌” |
facet.prefix | 以此值為前輟的terms才會作為Facet |
facet.contains | 字符串包含此值的terms才會作為Facet |
facet.contains.ignoreCase | 匹配 facet.contains 條件時,忽略大小寫 |
facet.sort | 指示Facet結果如何排序。有兩個值:1. count -- facet記錄數多的排前面 2. index -- 按索引中的次序 |
facet.limit | 限制返回的facet的數量。默認100. 為負數時表示不做限制。e.g. 設置為2的話,只返回品牌、類型和顏色中的2種。 |
facet.offset | 默認0. 一般用於分頁時,忽略前面多少個 |
facet.minCount | 設置最小的數量。例如:設置為3時,“類型”將會被拋棄 |
facet.missing | 默認值false. |
facet.method | facet的算法。三個可選值:enum, fc(默認值),fcs |
facet.exists | 用於facet.method=enum的情況 |
facet.excludeTerms | 排除某些terms |
facet.threads | 獲得facet的計算的線程數 |
還有另外一種facet,例如價格。需要把不同的價格范圍當作 一個facet。此時可以設置 facet.range.