Solr解析器通用的查詢參數
本文主要介紹下Solr解析器中通用的查詢參數。這些參數能夠在標準查詢解析器、DisMax查詢解析器及eDisMax查詢解析器中通用。
下表總結了Solr通用的查詢參數,支持標準的、DisMax、eDisMax查詢請求。
接下來的章節將詳細描述各個參數。
defType
參數defType指定Solr執行主查詢時使用的查詢解析器。比如:defType=dismax。
如果沒有指定defType,將默認使用標準個查詢解析器。
sort
參數sort指定查詢結果升序或降序。這個參數可以作用于數字或字母內容。可以使用全消息或全大寫。(比如,全是asc或ASC)。
Solr可以根據文檔分值或其他被索引或使用DocValues(即,在schema.xml文件中使用multiValued="false"和docValues="true"或者indexed="true"的字段,如果沒有啟用DocValues,將使用檢索數據)的單值字段值來進行排序。提供:
沒有進行標記(即,字段沒有analyzer,并且內容被解析進標記,致使排序不一致),或
使用分析器analyzer(比如KeywordTokenizer)且只產生一個檢索詞。
如果你向對一個需要進行標記便于檢索的字段排序,可以在schema.xml文件中使用
下面的表格將說明如果設置各種參數來對Solr響應進行排序:
關于排序參數:
排序必須包含一個字段名(或打分),之后跟一個空白字符(在URL字符串中使用+或%20),之后跟排序方向(asc或desc)。
多種排序規則可以使用逗號隔開,使用這樣的語法:sort=
如果有多個排序條件,只有在第一個排序結果并列,第二個才生效。如果有第三個從句,只有當第一個和第二個都并列相同時,才生效。依次類推。
start
該參數指定Solr查詢響應展示內容的偏移量。默認值是0.換句話說,默認情況下,Solr返回的結果沒有偏移,從頭開始。設置一個值,比如3,Solr將跳過前面 幾條數據,從指定偏移位置開始返回。你可以使用這種方式來分頁。比如,如果參數rows設置為10,可以通過設置start為0來連續返回幾頁數據,然后使用相同的查詢參數,設置start為10,再次查詢,然后設置20.
rows
可以使用參數rows來進行分頁查詢。這個參數指定了一次查詢最大返回文檔的數目。默認值是10.就是說,默認一次查詢返回10個文檔數據。
fq
參數fq可以定義一個限制返回文檔父集,不影響評分。通過指定參數fq將緩存主查詢,用來提高復雜查詢速度。當之后使用相同的過濾器,將會命中緩存,緩存中的結果立即返回。
使用參數fq時,需要注意:
參數fq可以在一個查詢中指定多次。只有每個參數實例的交集才能返回。在下面的例子中,只有popularity大于10且section是0的才能返回。fq=popularity:[10 TO *]&fq=section:0
過濾查詢可以包含復雜的布爾查詢。上面的例子也可以使用兩個從句一個fq實現:fq=+popularity:[10 TO *] +section:0。
每個過濾查詢的文檔集都是獨立緩存的。一次,關于簽名的例子:使用一個fq兩個從句,和使用兩個分開的fq將不想同(了解調整高速緩存大小和確保過濾緩存,看配置Solr實例)。
對所有參數:在URL中特殊字符需要進行轉移為十六進制。在線工具http://meyerweb.com/eric/tools/dencoder/可以提供這種轉碼。
fl
參數fl限制響應信息中包含的字段列表。該字段需要在索引時被存儲。
字段列表可以通過空格或逗號分割。字符串”score”可以被用來指明特定查詢的每個文檔的分數作為字段返回。通配符”*”表示文檔的所有字段。可以添加偽字段、函數、transformers作為字段返回。
下表是如果使用fl的基礎示例:
Function Values
函數可以為結果中每一個文檔計算結果,并返回偽字段:fl=id,title,product(price,popularity)。
Document Transformers
Document Transformers可以用來修改查詢結果中的每一個文件的返回信息:fl=id,title,[explain]。
Field Name Aliases
可以指定字段、函數、transformer的顯示名,比如:fl=id,sales_price:price,secret_sauce:prod(price,popularity),why_score:[explain style=nl],
"response":{"numFound":2,"start":0,"docs":[ { "id":"6H500F0", "secret_sauce":2100.0, "sales_price":350.0, "why_score":{ "match":true, "value":1.052226, "description":"weight(features:cache in 2) [DefaultSimilarity], result of:", "details":[{ ...
1
2
3
4
5
6
7
8
9
10
11
debug
參數debug可以指定多次,并支持以下參數:
debug=query: 至返回查詢的調試信息
debug=timing: 返回查詢執行時間的調試信息
debug=results: 返回結果分值的調試信息
debug=all: 返回所有的調試信息(也可以使用debug=true)
為了向后兼容,debugQuery=true可以使用debug=all替代。
默認查詢不包括調試信息。
explainOther
參數explainOther指定Lucene查詢來標記文檔集。如果非空,本次查詢將返回調試信息,以及主查詢(指定q參數)查詢文檔集的解釋信息。比如:q=supervillians&debugQuery=on&explainOther=id:juggernaut。
上面的查詢允許你檢查最佳匹配的分值解釋信息,可以與id:juggernaut進行比較,可以知道為什么不是你期望的排名。
默認參數為空,沒有額外解釋信息返回。
timeAllowed
This parameter specifies the amount of time, in milliseconds, allowed for a search to complete. If this time expires before the search is complete, any partial results will be returned.
此參數指定允許搜索完成的時間,以毫秒為單位。如果處理超時,只返回部分信息。
omitHeader
This parameter may be set to either true or false.
該參數可以設置為true或false。
如果設置為true,返回結果中不包含header數據。header數據包括請求信息,比如請求完成時間。默認是false。
wt
指定用于格式化響應結果的請求writer。詳細信息查看Response Writers。
cache=false
Solr默認緩存所有的查詢、過濾查詢結果。為了禁用緩存,設置參數cache=false。
還可以使用cost選項來控制非緩存的過濾查詢。這允許你能夠指定低耗非緩存過濾,而不是高耗非緩存過濾器。
對于高耗過濾器,如果cache=false,cost>=100,查詢實現了PostFilter,在匹配主查詢和其他過濾查詢之后,一個收集器將被請求來進行查詢和過濾文檔。可以有多個后置過濾器,可以根據cost配置。
比如:
// normal function range query used as a filter, all matching documents // generated up front and cached fq={!frange l=10 u=100}mul(popularity,price) // function range query run in parallel with the main query like a traditional // lucene filter fq={!frange l=10 u=100 cache=false}mul(popularity,price) // function range query checked after each document that already matches the query // and all other filters. Good for really expensive function queries. fq={!frange l=10 u=100 cache=false cost=100}mul(popularity,price)
1
2
3
4
5
6
7
8
9
10
11
logParamsList
默認情況下,Solr日志記錄所有請求參數。從4.7版本開始,可以設置參數來限制哪些參數被記錄。這有助于記錄你認為比較重要的參數。比如,你可以定義:logParamsList=q,fq。只有q和fq參數會被記錄。
如果不希望記錄任何參數,你可以給參數logParamsList賦空值(比如:logParamsList=)。
這個參數可以應用與所有的Solr請求,不只查詢請求。
Lucene/Solr
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。