這篇文章主要講解了“solr Query參數(shù)有哪些”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“solr Query參數(shù)有哪些”吧!
目前成都創(chuàng)新互聯(lián)已為近千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計、河池網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
一. Query參數(shù)
1. CoreQueryParam查詢的參數(shù)
1) q: 查詢字符串,必須的。
2) q.op: 覆蓋schema.xml的defaultOperator(有空格時用"AND"還是用"OR"操作邏輯),一般默認指定。
3) df: 默認的查詢字段,一般默認指定。
4) qt: query type,指定查詢使用的Query Handler,默認為“standard”。
5) wt: writer type。指定查詢輸出結(jié)構(gòu)格式,默認為“xml”。在solrconfig.xml中定義了查詢輸出格式:xml、json、python、ruby、php、phps、custom。
6) echoHandler:是否在查詢結(jié)果中顯示使用的Query Handler名稱。
7) echoParams:是否顯示查詢參數(shù)。none:不顯示;explicit:只顯示查詢參數(shù);all:所有,包括在solrconfig.xml定義的Query Handler參數(shù)。
8) indent - 返回的結(jié)果是否縮進,默認關(guān)閉,用 indent=true|on 開啟,一般調(diào)試json,php,phps,ruby輸出才有必要用這個參數(shù)。
9) version - 查詢語法的版本,建議不使用它,由
3. 使用函數(shù)查詢注意事項
1) 用于函數(shù)查詢的field必須是被索引的;
2) 字段不可以是多值的(multi-value)
4. 可以利用的函數(shù) (available function)
1) constant:支持有小數(shù)點的常量; 例如:1.5 ;SolrQuerySyntax:_val_:1.5
2) fieldvalue:這個函數(shù)將會返回numeric field的值,這個域必須是indexd的,非multiValued的。格式很簡單,就是該域的名字。如果這個域中沒有這樣的值,那么將會返回0。
3) ord:對于一個域,它所有的值都將會按照字典順序排列,這個函數(shù)返回你要查詢的那個特定的值在這個順序中的排名。這個域,必須是非multiValued的,當(dāng)沒有值存在的時候,將返回0。例如:某個特定的域只能去三個值,“apple”、“banana”、“pear”,那么ord(“apple”)=1,ord(“banana”)=2,ord(“pear”)=3.需要注意的是,ord()這個函數(shù),依賴于值在索引中的位置,所以當(dāng)有文檔被刪除、或者添加的時候,ord()的值就會發(fā)生變化。當(dāng)你使用MultiSearcher的時候,這個值也就是不定的了。
4) rord:這個函數(shù)將會返回與ord相對應(yīng)的倒排序的排名。 格式: rord(myIndexedField)。
5) sum:這個函數(shù)的意思就顯而易見啦,它就是表示“和”啦。格式:sum(x,1) 、sum(x,y)、 sum(sqrt(x),log(y),z,0.5)
6) product:product(x,y,...)將會返回多個函數(shù)的乘積。格式:product(x,2)、product(x,y)
7) div:div(x,y)表示x除以y的值,格式:div(1,x)、div(sum(x,100),max(y,1))
8) pow:pow表示冪值。pow(x,y) =x^y。例如:pow(x,0.5) 表示開方pow(x,log(y))
9) abs:abs(x)將返回表達式的絕對值。格式:abs(-5)、 abs(x)
10) log:log(x)將會返回基數(shù)為10,x的對數(shù)。格式: log(x)、 log(sum(x,100))
11) Sqrt:sqrt(x) 返回 一個數(shù)的平方根。格式:sqrt(2)、sqrt(sum(x,100))
12) Map:如果 x>=min,且x<=max,那么map(x,min,max,target)=target.如果 x不在[min,max]這個區(qū)間內(nèi),那么map(x,min,max,target)=x. 格式:map(x,0,0,1)
13) Scale:scale(x,minTarget,maxTarget) 這個函數(shù)將會把x的值限制在[minTarget,maxTarget]范圍內(nèi)。 14) query :query(subquery,default)將會返回給定subquery的分數(shù),如果subquery與文檔不匹配,那么將會返回默認值。任何的查詢類型都是受支持的??梢酝ㄟ^引用的方式,也可以直接指定查詢串。
例子:q=product(popularity, query({!dismax v='solr rocks'}) 將會返回popularity和通過dismax 查詢得到的分數(shù)的乘積。
q=product(popularity, query($qq)&qq={!dismax}solr rocks 跟上一個例子的效果是一樣的。不過這里使用的是引用的方式
q=product(popularity, query($qq,0.1)&qq={!dismax}solr rocks 在前一個例子的基礎(chǔ)上又加了一個默認值。
15) linear: inear(x,m,c)表示 m*x+c ,其中m和c都是常量,x是一個變量也可以是一個函數(shù)。例如: linear(x,2,4)=2*x+4.
16) Recip:recip(x,m,a,b)=a/(m*x+b)其中,m、a、b是常量,x是變量或者一個函數(shù)。當(dāng)a=b,并且x>=0的時候,這個函數(shù)的最大值是1,值的大小隨著x的增大而減小。例如:recip(rord(creationDate),1,1000,1000)
17) Max: max(x,c)將會返回一個函數(shù)和一個常量之間的最大值。 例如:max(myfield,0)
感謝各位的閱讀,以上就是“solr Query參數(shù)有哪些”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對solr Query參數(shù)有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!