Solr Facet(分片)
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
在schema文件設(shè)置字段的type類(lèi)型是string,不分詞,只能被整個(gè)搜索。facet的該字段可以整個(gè)展示,就像淘寶的搜索條件一樣。
一、Facet介紹
solr facet 是solr搜索的一大特色,facet不好翻譯,有說(shuō)是垂直搜索,有說(shuō)是分片搜索,但都不是很好,還是懶得翻譯了,就叫facet ,具體功能看下面的例子意會(huì)吧。
?
比如你上淘寶,輸入“筆記本”進(jìn)行搜索,就會(huì)出現(xiàn)品牌分類(lèi),價(jià)格范圍等分類(lèi),這個(gè)就叫facet了。這個(gè)例子也許好不是那么準(zhǔn)確的描述facet,不過(guò)基本上就是這個(gè)意思。對(duì)輸入關(guān)鍵字后搜索出來(lái)的結(jié)果再進(jìn)行分類(lèi)。
?
?
二、?Facet查詢(xún)
進(jìn)行Facet查詢(xún)需要在請(qǐng)求參數(shù)中加入”facet=on”或者”facet=true”只有這樣Facet組件才起作用.
1.?Field?Facet
Facet字段通過(guò)在請(qǐng)求中加入”facet.field”參數(shù)加以聲明,如果需要對(duì)多個(gè)字段進(jìn)行Facet查詢(xún),那么將該參數(shù)聲明多次.比如
http://localhost:8983/solr/select?q=聯(lián)想&facet=on&facet.field=cpu&facet.field=videoCard
?
查詢(xún)返回
?
<lst?name="facet_counts">??
<lst?name="facet_queries"/>??
<lst?name="facet_fields">??
<lst?name="cpu">??
<int?name="Intel?酷睿2雙核?T6600">48</int>??
?<int?name="Intel?奔騰雙核?T4300">28</int>??
<int?name="Intel?酷睿2雙核?P8700">18</int>??
<int?name="Intel?酷睿2雙核?T6570">11</int>??
<int?name="Intel?酷睿2雙核?T6670">11</int>??
<int?name="Intel?奔騰雙核?T4400">9</int>??
<int?name="Intel?酷睿2雙核?P7450">9</int>??
<int?name="Intel?酷睿2雙核?T5870">8</int>??
<int?name="Intel?賽揚(yáng)雙核?T3000">7</int>??
<int?name="Intel?奔騰雙核?SU4100">6</int>??
<int?name="Intel?酷睿2雙核?P8400">6</int>??
<int?name="Intel?酷睿2雙核?SU7300">5</int>??
<int?name="Intel?酷睿?i3?330M">4</int>??
</lst>??
<lst?name="videoCard">??
<int?name="ATI?Mobility?Radeon?HD?4">63</int>??
<int?name="NVIDIA?GeForce?G?105M">24</int>??
<int?name="NVIDIA?GeForce?GT?240M">21</int>??
<int?name="NVIDIA?GeForce?G?103M">8</int>??
<int?name="NVIDIA?GeForce?GT?220M">8</int>??
<int?name="NVIDIA?GeForce?9400M?G">7</int>??
<int?name="NVIDIA?GeForce?G?210M">6</int>??
????</lst>??
????</lst>??
????<lst?name="facet_dates"/>??
</lst>??
?
?
各個(gè)Facet字段互不影響,且可以針對(duì)每個(gè)Facet字段設(shè)置查詢(xún)參數(shù).以下介紹的參數(shù)既可以應(yīng)用于所有的Facet字段,也可以應(yīng)用于每個(gè)單獨(dú)的Facet字段.應(yīng)用于單獨(dú)的字段時(shí)通過(guò)
?
f.字段名.參數(shù)名=參數(shù)值
這種方式調(diào)用.比如facet.prefix參數(shù)應(yīng)用于cpu字段,可以采用如下形式
f.cpu.facet.prefix=Intel
?
三、facet 參數(shù)
facet的參數(shù)見(jiàn)solr官方wiki ?http://wiki.apache.org/solr/SimpleFacetParameters
?
說(shuō)明:
搜索結(jié)果按照Facet的字段分組并統(tǒng)計(jì)
?
facet 參數(shù)字段要求
字段必須被索引
?
#.field Facet
facet=on 或 facet=true
?
1.facet.field ?
分組的字段
2.facet.prefix?
表示Facet字段前綴
3.facet.limit?
Facet字段返回條數(shù)
4.facet.offict?
開(kāi)始條數(shù),偏移量,它與facet.limit配合使用可以達(dá)到分頁(yè)的效果
5.facet.mincount?
Facet字段最小count,默認(rèn)為0
6.facet.missing?
如果為on或true,那么將統(tǒng)計(jì)那些Facet字段值為null的記錄
7.facet.method?
取值為enum或fc,默認(rèn)為fc, fc表示Field Cache
8.facet.enum.cache.minDf?
當(dāng)facet.method=enum時(shí),參數(shù)起作用,文檔內(nèi)出現(xiàn)某個(gè)關(guān)鍵字的最少次數(shù)
?
例:
&facet=on
&facet.field=city_id
&facet.field=address
?
http://localhost:8983/solr/select/?q=*:*&indent=on&facet=on&facet.field=unit_price&facet.field=developer_id
?
返回結(jié)果facet_counts:
Xml代碼??
<lst?name="facet_counts">??
<lst?name="facet_queries"/>??
<lst?name="facet_fields">??
????<lst?name="unit_price">??
????????<int?name="9100.0">2</int>??
????????<int?name="1100.0">1</int>??
????</lst>??
????<lst?name="developer_id">??
????????<int?name="101">2</int>??
????????<int?name="100">1</int>??
????</lst>??
</lst>??
<lst?name="facet_dates"/>??
</lst>??
?
#.Date Facet
日期類(lèi)型的字段
?
1.facet.date?
表示需要Data Facet的字段名
2.facet.date.start
起始時(shí)間.時(shí)間一般格式為"1995-12-31T12:59:59Z"
另外可以使用"NOW","YEAR","MONTH"等
3.facet.date.end
結(jié)束時(shí)間
4.facet.date.gap
時(shí)間間隔
5.facet.date.hardend
true|false?
6.facet.date.other
before|after|between|none|all 默認(rèn)為none
before會(huì)對(duì)start之前的值做統(tǒng)計(jì)
after會(huì)對(duì)end之后的值做統(tǒng)計(jì)
between會(huì)對(duì)start至end之間的值做統(tǒng)計(jì),如果hardend為true的話,那么改值就是各個(gè)時(shí)間段統(tǒng)計(jì)值的和
none 表示該項(xiàng)禁用
all 表示before,after,all都會(huì)統(tǒng)計(jì)
?
例:
$facet=on
&facet.date=date
&facet.date.start=2009-1-1T0:0:0Z
&facet.date.end=2010-1-1T0:0:0Z
&facet.date.gap=;1MONTH
&facet.date.other=all
?
7.facet.date.include
lower|upper|edge|outer|all
?
?
#.Facet Query
facet.query 可以對(duì)任意的字段進(jìn)行篩選
?
例:
&facet=on
&facet.query=date:[2009-1-1T0:0:0Z TO 2010-1-1T0:0:0Z]
轉(zhuǎn)載于:https://my.oschina.net/HuifengWang/blog/308759
總結(jié)
以上是生活随笔為你收集整理的Solr Facet(分片)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: PC远程调试移动设备
- 下一篇: Ext.js4.x 的面板中嵌入UEdi