高性能探尋solr 學習筆記 共享_第1頁
高性能探尋solr 學習筆記 共享_第2頁
高性能探尋solr 學習筆記 共享_第3頁
高性能探尋solr 學習筆記 共享_第4頁
高性能探尋solr 學習筆記 共享_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

本文格式為Word版,下載可任意編輯——高性能探尋solr學習筆記共享

高性能探尋SOLR學習筆記共享

文件名相應Module開發(fā)類型文件內(nèi)容SOLRFACET學習筆記.DOCX學習總結Web開發(fā)本文主要介紹solr中query參數(shù)、query用法和functionQuery的基本應用,solr,query,參數(shù),functionQuery,查詢語法,函數(shù)查詢!

一.Query參數(shù)

1.CoreQueryParam查詢的參數(shù)

1)q:查詢字符串,必需的。

2)q.op:覆蓋schema.xml的defaultOperator(有空格時用\還是用\操作邏

輯),一般默認指定。

3)df:默認的查詢字段,一般默認指定。

4)qt:querytype,指定查詢使用的QueryHandler,默認為“standard〞。

5)wt:writertype。指定查詢輸出結構格式,默認為“xml〞。在solrconfig.xml中定義

了查詢輸出格式:xml、json、python、ruby、php、phps、custom。6)echoHandler:是否在查詢結果中顯示使用的QueryHandler名稱。

7)echoParams:是否顯示查詢參數(shù)。none:不顯示;explicit:只顯示查詢參數(shù);

all:所有,包括在solrconfig.xml定義的QueryHandler參數(shù)。

8)indent-返回的結果是否縮進,默認關閉,用indent=true|on開啟,一般調(diào)試

json,php,phps,ruby輸出才有必要用這個參數(shù)。

9)version-查詢語法的版本,建議不使用它,由服務器指定默認值。

2.CommonQueryParameters

1)sort:排序,格式:sort=+[,+]?。

例如:(inStockdesc,priceasc)表示先“inStock〞降序,再“price〞升序,默認是相關性降序。。

2)start:用于分頁定義結果起始記錄數(shù),默認為0。

3)rows:用于分頁定義結果每頁返回記錄數(shù),默認為10。

4)fq:filterquery。使用FilterQuery可以充分利用FilterQueryCache,提高檢索性

能。作用:在q查詢符合結果中同時是fq查詢符合的,例如:q=mm&fq=date_time:[20231001TO20231031],找關鍵字mm,并且date_time是20231001到20231031之間的。

5)fl:fieldlist。指定返回結果字段。以空格“〞或逗號“,〞分隔。6)debugQuery:設置返回結果是否顯示Debug信息。

7)explainOther:設置當debugQuery=true時,顯示其他的查詢說明。8)defType:設置查詢解析器名稱。9)timeAllowed:設置查詢超時時間。

10)omitHeader:設置是否忽略查詢結果返回頭信息,默認為“false〞。

二.查詢語法

1.匹配所有文檔:*:*

2.強制、阻止和可選查詢:

1)Mandatory:查詢結果中必需包括的(forexample,onlyentrynamecontainingthe

wordmake)

Solr/LuceneStatement:+make,+make+up,+make+up+kiss

2)prohibited:(forexample,alldocumentsexceptthosewithwordbelieve)

Solr/LuceneStatement:+make+up-kiss3)optional:

Solr/LuceneStatement:+make+upkiss

3.布爾操作:AND、OR和NOT布爾操作(必需大寫)與Mandatory、optional和prohibited

相像。

1)makeANDup=+make+up:AND左右兩邊的操作都是mandatory2)make||up=makeORup=makeup:OR左右兩邊的操作都是optional3)+make+upNOTkiss=+make+up–kiss

4)makeANDupORfrenchANDKiss不可以達到期望的結果,由于AND兩邊的操

作都是mandatory的。

4.子表達式查詢(子查詢):可以使用“()〞構造子查詢。

Forex:(makeANDup)OR(frenchANDKiss)

5.子表達式查詢中阻止查詢的限制:

Forex:make(-up):只能取得make的查詢結果;要使用make(-up*:*)查詢make或者不包括up的結果。

6.多字段fields查詢:通過字段名加上分號的方式(fieldName:query)來進行查詢

Forex:entryNm:makeANDentryId:3cdc86e8e0fb4da8ab17caed42f6760c

7.通配符查詢(wildCardQuery):

1)通配符?和*:“*〞表示匹配任意字符;“?〞表示匹配出現(xiàn)的位置。

Forex:ma?*(ma后面的一個位置匹配),ma??*(ma后面兩個位置都匹配)2)查詢字符必需要小寫:+Ma+be**可以探尋到結果;+Ma+Be**沒有探尋結果3)查詢速度較慢,特別是通配符在首位:主要原因一是需要迭代查詢字段中的每

個term,判斷是否匹配;二是匹配上的term被加到內(nèi)部的查詢,當terms數(shù)量達到1024的時候,查詢會失敗。

4)Solr中默認通配符不能出現(xiàn)在首位(可以修改QueryParser,設置

setAllowLeadingWildcard為true)5)setsetAllowLeadingWildcardtotrue.

8.模糊查詢、相像查詢:不是確切的查詢,通過對查詢的字段進行重新插入、刪除和

轉(zhuǎn)換來取得得分較高的查詢解決(由LevensteinDistanceAlgorithm算法支持)。

1)一般模糊查詢:forex:make-believ~

2)門檻模糊查詢:對模糊查詢可以設置查詢門檻,門檻是0~1之間的數(shù)值,門檻

越高表面相像度越高。Forex:make-believ~0.5、make-believ~0.8、make-believ~0.99.范圍查詢(RangeQuery):Lucene支持對數(shù)字、日期甚至文本的范圍查詢。終止的

范圍可以使用“*〞通配符。Forex:

1)日期范圍(ISO-8601時間GMT):sa_type:2ANDa_begin_date:[1990-01-01T00:00:00.000ZTO

1999-12-31T24:59:99.999Z]

2)數(shù)字:salary:[2000TO*]3)文本:entryNm:[aTOa]

10.日期匹配:YEAR,MONTH,DAY,DATE(synonymouswithDAY)HOUR,MINUTE,SECOND,

MILLISECOND,andMILLI(synonymouswithMILLISECOND)可以被標志成日期。Forex:

1)r_event_date:[*TONOW-2YEAR]:2年前的現(xiàn)在這個時間2)r_event_date:[*TONOW/DAY-2YEAR]:2年前前一天的這個時間

三.函數(shù)查詢(FunctionQuery)

函數(shù)查詢可以利用numeric域的值或者與域相關的的某個特定的值的函數(shù),來對文檔進行評分。

1.使用函數(shù)查詢的方法

這里主要有三種方法可以使用函數(shù)查詢,這三種s方法都是通過solrhttp接口的。

1)使用FunctionQParserPlugin。ie:q={!func}log(foo)2)使用“_val_〞內(nèi)嵌方法

內(nèi)嵌在正常的solr查詢表達式中。即,將函數(shù)查詢寫在q這個參數(shù)中,這時候,我們使用“_val_〞將函數(shù)與其他的查詢加以區(qū)別。ie:entryNm:make&&_val_:ord(entryNm)

3)使用dismax中的bf參數(shù)

使用明確為函數(shù)查詢的參數(shù),譬如說dismax中的bf(boostfunction)這個參數(shù)。注意:bf這個參數(shù)是可以接受多個函數(shù)查詢的,它們之間用空格隔開,它們還可以帶上權重。所以,當我們使用bf這個參數(shù)的時候,我們必需保證單個函數(shù)中是沒有空格出現(xiàn)的,不然程序有可能會以為是兩個函數(shù)。Forex:

q=dismax&bf=\0,1000)^0.32.函數(shù)的格式(FunctionQuerySyntax)

目前,functionquery并不支持a+b這樣的形式,我們得把它寫成一個方法形式,這就是sum(a,b).

3.使用函數(shù)查詢本卷須知

1)用于函數(shù)查詢的field必需是被索引的;2)字段不可以是多值的(multi-value)

4.可以利用的函數(shù)(availablefunction)

1)constant:支持有小數(shù)點的常量;例如:1.5;SolrQuerySyntax:_val_:1.52)fieldvalue:這個函數(shù)將會返回numericfield的值,這個域必需是indexd的,

非multiValued的。格式很簡單,就是該域的名字。假使這個域中沒有這樣的值,那么將會返回0。

3)ord:對于一個域,它所有的值都將會依照字典順序排列,這個函數(shù)返回你要查

詢的那個特定的值在這個順序中的排名。這個域,必需是非multiValued的,當沒有值存在的時候,將返回0。例如:某個特定的域只能去三個值,“apple〞、“banana〞、“pear〞,那么ord(“apple〞)=1,ord(“banana〞)=2,ord(“pear〞)=3.需要注意的是,ord()這個函數(shù),依靠于值在索引中的位置,所以當有文檔被刪除、或者添加的時候,ord()的值就會發(fā)生變化。當你使用MultiSearcher的時候,這個值也就是不定的了。

4)rord:這個函數(shù)將會返回與ord相對應的倒排序的排名。

格式: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)將會返

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論