好吧,言歸正題,solr的Facet是一個什麼東西呢?我我的理解,反映一個搜索詞的小平面(或者說某一個分組),起到標籤聚合統計的功能。舉個列子說,像咱們公司的電商類網站那樣的對搜索結果聚合分類,品牌等屬性。以下圖web
這個是搜索鐵觀音這個詞,統計了分類和品牌2個側面(分組),鐵觀音在生活分類下有64個,茗茶裏面48……性能
上面這個說到底,就是某一類型的標籤統計,好比xxx年熱詞等等,只要有記錄,也能統計出來,固然,超大數據量提早優化好solr的性能。大數據
介紹了一下facet以後,來講說怎麼實現facet。facet的實現其實很簡單,主要在搜索參數上帶上就OK。優化
facet=on/true #表明開啓facet
facet.field=cate #表明要統計的面(分組),好比上面的分類,品牌,能夠屢次出現
facet.limit =20 #每一個分組最多返回條數
facet.mincount = 1 #這個表示分組下某一條目的最小數據量(只有>=的纔會返回)
facet.missing = on/true #統計null的值網站
facet.method = #默認爲fc, fc表示Field Cache
好比:spa
http://localhost/product/select/?q=鐵觀音&facet=on&facet.field=category&facet.field=brand&facet.mincount=1在搜索結果中返回xml的facet結果
code
<lst name="facet_counts"> <lst name="facet_queries"/> <lst name="facet_fields"> <lst name="category"> <int name="2742">64</int> <int name="793">48</int> <int name="2741">12</int> <int name="801">6</int> <int name="1087">1</int> </lst><lst name="brand"> <int name="229">74</int> <int name="227">16</int> <int name="270">13</int> <int name="317">10</int> <int name="0">4</int> <int name="165">4</int> <int name="203">3</int> <int name="147">2</int> <int name="166">2</int> <int name="217">1</int> <int name="342">1</int> <int name="343">1</int> </lst> </lst>
<lst name="category"> 分組名
<int name="2742">64</int> 分組內條目,name表示條目,64是統計結果數。xml