日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

solr参数之facet

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

facet就像sql語句中的group一樣,是對某一個字段進行group并count,即能夠按照Facet的字段進行分組并統(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字段進行Facet查詢,返回的cpu都是以”Intel”開頭的,”AMD”開頭的cpu型號將不會被統(tǒng)計在內.

1.2 facet.sort

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

1.3 facet.limit

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

1.4 facet.offset

返回結果集的偏移量,默認為0.它與facet.limit配合使用可以達到分頁的效果.

1.5 facet.mincount

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

1.6 facet.missing

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

1.7 facet.method

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

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

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

1.8 facet.enum.cache.minDf

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

2. Date Facet

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

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

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

2.1 facet.date

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

2.2 facet.date.start

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

2.3 facet.date.end

結束時間.

2.4 facet.date.gap

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

2.5 facet.date.hardend

取值可以為true|false,默認為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,默認為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)計.

轉載于:https://www.cnblogs.com/cuihongyu3503319/p/10765997.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。