日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

solr参数之facet

發(fā)布時間:2024/10/12 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 solr参数之facet 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

facet就像sql語句中的group一樣,是對某一個字段進(jìn)行g(shù)roup并count,即能夠按照Facet的字段進(jìn)行分組并統(tǒng)計。

一、基本使用:

必須屬性:facet=true&facet.field=YOU_FIELD_NAME(注:facet=true打開層面,facet.field=YOU_FIELD_NAME想group的字段名稱)e.g:

http://localhost/solr/select/?q=*:*&indent=on&facet=on&facet.field=unit_price&facet.field=developer_id

?

二、facet 參數(shù)

facet的參數(shù)見solr官方wiki ?http://wiki.apache.org/solr/SimpleFacetParameters

?

1.1 facet.prefix

表示Facet字段值的前綴.比如”facet.field=cpu&facet.prefix=Intel”,那么對cpu字段進(jìn)行Facet查詢,返回的cpu都是以”Intel”開頭的,”AMD”開頭的cpu型號將不會被統(tǒng)計在內(nèi).

1.2 facet.sort

表示Facet字段值以哪種順序返回.可接受的值為true(count)|false(index,lex). true(count)表示按照count值從大到小排列. false(index,lex)表示按照字段值的自然順序(字母,數(shù)字的順序)排列.默認(rèn)情況下為true(count).當(dāng)facet.limit值為負(fù)數(shù)時,默認(rèn)facet.sort= false(index,lex).

1.3 facet.limit

限制Facet字段返回的結(jié)果條數(shù).默認(rèn)值為100.如果此值為負(fù)數(shù),表示不限制.

1.4 facet.offset

返回結(jié)果集的偏移量,默認(rèn)為0.它與facet.limit配合使用可以達(dá)到分頁的效果.

1.5 facet.mincount

限制了Facet字段值的最小count,默認(rèn)為0.合理設(shè)置該參數(shù)可以將用戶的關(guān)注點(diǎn)集中在少數(shù)比較熱門的領(lǐng)域.

1.6 facet.missing

默認(rèn)為””,如果設(shè)置為true或者on,那么將統(tǒng)計那些該Facet字段值為null的記錄.

1.7 facet.method

取值為enum或fc,默認(rèn)為fc.該字段表示了兩種Facet的算法,與執(zhí)行效率相關(guān).

enum適用于字段值比較少的情況,比如字段類型為布爾型,或者字段表示中國的所有省份.Solr會遍歷該字段的所有取值,并從filterCache里為每個值分配一個filter(這里要求solrconfig.xml里對filterCache的設(shè)置足夠大).然后計算每個filter與主查詢的交集.

fc(表示Field Cache)適用于字段取值比較多,但在每個文檔里出現(xiàn)次數(shù)比較少的情況.Solr會遍歷所有的文檔,在每個文檔內(nèi)搜索Cache內(nèi)的值,如果找到就將Cache內(nèi)該值的count加1.

1.8 facet.enum.cache.minDf

當(dāng)facet.method=enum時,此參數(shù)其作用,minDf表示minimum document frequency.也就是文檔內(nèi)出現(xiàn)某個關(guān)鍵字的最少次數(shù).該參數(shù)默認(rèn)值為0.設(shè)置該參數(shù)可以減少filterCache的內(nèi)存消耗,但會增加總的查詢時間(計算交集的時間增加了).如果設(shè)置該值的話,官方文檔建議優(yōu)先嘗試25-50內(nèi)的值.

2. Date Facet

日期類型的字段在文檔中很常見,如商品上市時間,貨物出倉時間,書籍上架時間等等.某些情況下需要針對這些字段進(jìn)行Facet.不過時間字段的取值有無限性,用戶往往關(guān)心的不是某個時間點(diǎn)而是某個時間段內(nèi)的查詢統(tǒng)計結(jié)果. Solr為日期字段提供了更為方便的查詢統(tǒng)計方式.當(dāng)然,字段的類型必須是DateField(或其子類型).

需要注意的是,使用Date Facet時,字段名,起始時間,結(jié)束時間,時間間隔這4個參數(shù)都必須提供.

與Field Facet類似,Date Facet也可以對多個字段進(jìn)行Facet.并且針對每個字段都可以單獨(dú)設(shè)置參數(shù).

2.1 facet.date

該參數(shù)表示需要進(jìn)行Date Facet的字段名,與facet.field一樣,該參數(shù)可以被設(shè)置多次,表示對多個字段進(jìn)行Date Facet.

2.2 facet.date.start

起始時間,時間的一般格式為” 1995-12-31T23:59:59Z”,另外可以使用”NOW”,”YEAR”,”MONTH”等等,具體格式可以參考o(jì)rg.apache.solr.schema. DateField的java doc.

2.3 facet.date.end

結(jié)束時間.

2.4 facet.date.gap

時間間隔.如果start為2009-1-1,end為2010-1-1.gap設(shè)置為”+1MONTH”表示間隔1個月,那么將會把這段時間劃分為12個間隔段.注意”+”因為是特殊字符所以應(yīng)該用”%2B”代替.

2.5 facet.date.hardend

取值可以為true|false,默認(rèn)為false.它表示gap迭代到end處采用何種處理.舉例說明start為2009-1-1,end為2009-12-25,gap為”+1MONTH”,hardend為false的話最后一個時間段為2009-12-1至2010-1-1;hardend為true的話最后一個時間段為2009-12-1至2009-12-25.

2.6 facet.date.other

取值范圍為before|after|between|none|all,默認(rèn)為none.

before會對start之前的值做統(tǒng)計.

after會對end之后的值做統(tǒng)計.

between會對start至end之間所有值做統(tǒng)計.如果hardend為true的話,那么該值就是各個時間段統(tǒng)計值的和.

none表示該項禁用.

all表示before,after,all都會統(tǒng)計.

轉(zhuǎn)載于:https://www.cnblogs.com/cuihongyu3503319/p/10765997.html

總結(jié)

以上是生活随笔為你收集整理的solr参数之facet的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。