W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
在 Solr 中幾個查詢解析器可以共享由 Solr 支持的查詢參數(shù)。
以下部分描述了 Solr 中常見的查詢參數(shù),Search RequestHandlers 支持這些參數(shù)。
defType 參數(shù)選擇 Solr 應該用來處理請求中的主查詢參數(shù)(q)的查詢解析器。例如:
defType=dismax
如果沒有指定 defType 參數(shù),則默認使用標準查詢解析器。(如:defType=lucene)
sort 參數(shù)按升序 (asc) 或降序 (desc) 順序排列搜索結(jié)果。該參數(shù)可以與數(shù)字或字母內(nèi)容一起使用。方向可以全部以小寫字母或全部大寫字母輸入(即,asc 或者ASC)。
Solr 可以根據(jù)文檔分數(shù)或具有單個值的任何字段的值對查詢響應進行排序,該字段具有索引或使用 DocValues 的單個值(即任何字段,它在架構(gòu)屬性包括multiValued="false",要么 docValues="true" 或 indexed="true"- 如果該字段沒有啟用 DocValues,則使用索引術(shù)語在運行時以動態(tài)方式生成它們),條件是:
如果您希望能夠?qū)σ獦擞浧鋬?nèi)容的字段進行排序以便于搜索,請使用架構(gòu)中的 copyField 指令克隆該字段。然后在該字段上搜索并對其克隆進行排序。
該表說明 Solr 如何響應 sort 參數(shù)的各種設置:
例 | 結(jié)果 |
---|---|
如果省略了 sort 參數(shù),則執(zhí)行排序就好像將該參數(shù)設置為 score |
|
score desc |
從最高分到最低分按降序排列 |
price asc |
按 price 字段的升序排序 |
inStock desc,price asc |
按降序排列 |
關(guān)于 sort 參數(shù)的參數(shù):
sort=<field name><direction>,<field name><direction>],…?
如果提供了多個排序標準,則只有在第一個條目產(chǎn)生并列時才使用第二個條目。如果有第三個條目,則只有在第一個和第二個條目是并列的情況下才能使用。這種模式會在之后的條目中繼續(xù)。
指定時,start 參數(shù)指定查詢結(jié)果集中的偏移量,并指示 Solr 開始顯示此偏移量的結(jié)果。
默認值是 0。換句話說,默認情況下,Solr 返回的結(jié)果沒有偏移量,從結(jié)果開始的地方開始。
將該 start 參數(shù)設置為某個其他數(shù)字(例如3,)會導致 Solr 跳過前面的記錄,并從由偏移量標識的文檔開始。
您可以使用這個 start 參數(shù)來進行分頁。例如,如果 rows 參數(shù)設置為10,則可以通過將 start 設置為0來顯示3個連續(xù)的結(jié)果頁面,然后重新發(fā)出相同的查詢并將 start 設置為10,然后再次發(fā)出查詢并將 start 設置為 20。
您可以使用該 rows 參數(shù)將查詢的結(jié)果分頁。該參數(shù)指定 Solr 應該一次返回到客戶端的完整結(jié)果集中的最大文檔數(shù)目。
默認值是10。也就是說,默認情況下,Solr 一次返回 10 個文檔以響應查詢。
fq 參數(shù)定義了一個查詢,可以用來限制可以返回的文檔的超集,而不影響 score。這對于加快復雜查詢非常有用,因為指定的查詢 fq 是獨立于主查詢而被緩存的。當以后的查詢使用相同的過濾器時,會有一個緩存命中,過濾器結(jié)果從緩存中快速返回。
使用該 fq 參數(shù)時,請記住以下幾點:
fq=popularity:[10 TO *]&fq=section:0
fq=+popularity:[10 TO *] +section:0
該 fl 參數(shù)將查詢響應中包含的信息限制在指定的字段列表中。這些字段必須是 stored="true" 或 docValues="true"。
字段列表可以指定為空格分隔或逗號分隔的字段名稱列表。字符串“score”可以用來表示特定查詢的每個文檔的分數(shù)應該作為字段返回。通配符 * 選擇文檔中的所有字段,它們是 stored="true"、docValues="true" 和 useDocValuesAsStored="true"(當啟用 docValues 時,這是默認字段)。您還可以添加偽字段(pseudo-fields)、函數(shù)和變換器到字段列表請求。
本表顯示了如何使用 fl 參數(shù)的一些基本示例:
字段列表(Field List) | 結(jié)果 |
---|---|
id name price |
僅返回 ID,name 和 price 字段。 |
id,name,price |
僅返回 ID,name 和 price 字段。 |
id name, price |
僅返回 ID,name 和 price 字段。 |
id score |
返回 id 字段和 score。 |
* |
返回每個文檔中的所有 stored 字段,以及任何 useDocValuesAsStored="true" 的 docValues 字段。這是 fl 參數(shù)的默認值。 |
* score |
返回每個文檔中的所有字段以及每個字段的 score。 |
*,dv_field_name |
返回每個文檔中的所有stored字段,以及任何具有 useDocValuesAsStored =“true” 的 docValues 字段和來自 dv_field_name 的 docValues,即使它具有useDocValuesAsStored =“false”。 |
可以為結(jié)果中的每個文檔計算函數(shù),并將其作為偽字段(pseudo-field)返回:
fl=id,title,product(price,popularity)
文檔變換器可以用來修改查詢結(jié)果中每個文檔返回的信息:
fl=id,title,[explain]
您可以通過使用 “displayName” 前綴來更改對字段、函數(shù)或轉(zhuǎn)換器的響應中使用的鍵。例如:
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": [{
"..."
}]}}]}}
該 debug 參數(shù)可以多次指定,并支持以下參數(shù):
為了向后兼容老版本的 Solr,debugQuery=true 可以將其指定為另一種指示方式 debug=all。
默認行為是不包含調(diào)試信息。
該 explainOther 參數(shù)指定了一個 Lucene 查詢來標識一組文檔。如果包含此參數(shù)并設置為非空值,則查詢將返回調(diào)試信息以及與 Lucene 查詢相匹配的每個文檔的“說明信息”(相對于主查詢(由 q 指定)參數(shù))。例如:
q=supervillians&debugQuery=on&explainOther=id:juggernaut
上面的查詢允許您檢查頂級匹配文檔的評分解釋信息,將其與 id:juggernaut 文檔匹配的解釋信息進行比較,并確定排名不符合您的期望的原因。
這個參數(shù)的默認值是空的,這不會導致返回額外的“解釋信息”。
此參數(shù)指定允許搜索完成的時間量(以毫秒為單位)。如果此時間在搜索完成之前到期,任何部分結(jié)果將返回,但如 numFound、facet 數(shù)和結(jié)果的統(tǒng)計的值可能對整個結(jié)果集不準確。
此值僅在以下時間檢查:
由于此檢查是周期性執(zhí)行的,因此在中止請求之前處理請求的實際時間將略微大于或等于 timeAllowed 的值。如果請求在其他階段中花費更多時間,自定義組件等,則不希望此參數(shù)中止請求。
該參數(shù)可以設置為 true 或 false。
如果設置為 true,并且如果此集合的 mergePolicyFactory 是 SortingMergePolicyFactory(使用的 sort 選項與此查詢指定的 sort 參數(shù)兼容),則 Solr 將嘗試使用 EarlyTerminatingSortingCollector。
如果提前終止(early termination)使用,一個 segmentTerminatedEarly 標題將包含在 responseHeader。
使用類似的 timeAllowed `Parameter, 當早期段終止發(fā)生時,例如值 `numFound,F(xiàn)acet 計數(shù),并導致 Stats 可能不準確對整個結(jié)果集。
這個參數(shù)的默認值是 false。
該參數(shù)可以設置為 true 或 false。
如果設置為 true,則此參數(shù)將從返回的結(jié)果中排除標題。標題包含有關(guān)請求的信息,例如完成所需的時間。該參數(shù)的默認值是 false。
該 wt 參數(shù)選擇 Solr 應該用來格式化查詢響應的 Response Writer。有關(guān)響應寫入程序的詳細說明,請參閱響應寫入程序。
如果您沒有在查詢中定義 wt 參數(shù),那么 JSON 將作為響應的格式返回。
Solr 默認緩存所有查詢的結(jié)果并過濾查詢。要禁用結(jié)果緩存,請設置 cache=false 參數(shù)。
您也可以使用該 cost 選項來控制計算非緩存篩選器查詢的順序。這使您可以在昂貴的非緩存過濾器之前訂購更便宜的非緩存過濾器。
對于成本非常高的過濾器,如果 cache=falseand 并且 cost>=100 和查詢實現(xiàn)了 PostFilter 接口,則將從該查詢請求收集器,并在匹配主查詢和所有其他過濾器查詢后用于過濾文檔??梢杂卸鄠€后置過濾器;他們也按成本排序。
例如:
這是一個正常的函數(shù)范圍查詢,用作過濾器,所有匹配的文件都是預先生成和緩存的:
fq={!frange l=10 u=100}mul(popularity,price)
這是一個與傳統(tǒng)的 lucene 過濾器并行運行的函數(shù)范圍查詢:
fq={!frange l=10 u=100 cache=false}mul(popularity,price)
這是在每個已經(jīng)匹配查詢和所有其他過濾器的文檔之后檢查的函數(shù)范圍查詢。這對于非常昂貴的函數(shù)查詢是很好的:
fq={!frange l=10 u=100 cache=false cost=100}mul(popularity,price)
默認情況下,Solr 記錄請求的所有參數(shù)。設置此參數(shù)以限制請求的哪些參數(shù)被記錄。這可能有助于將日志記錄控制為僅對貴組織認為重要的參數(shù)。
例如,你可以像這樣定義:
logParamsList=q,fq
只有 'q' 和 'fq' 參數(shù)會被記錄。
如果沒有參數(shù)應該被記錄,你可以發(fā)送 logParamsList 為空(即,logParamsList=)。
Tip:這個參數(shù)不僅適用于查詢請求,而且適用于 Solr 的任何類型的請求。
該 echoParams 參數(shù)控制響應頭中包含的有關(guān)請求參數(shù)的信息。
該 echoParams 參數(shù)接受以下值:
下面是一個 JSON 響應的例子,其中沒有包含 echoParams 參數(shù),所以缺省值 explicit 是活動的。創(chuàng)建此響應的請求的 URL 包括三個參數(shù) - q,wt 和 indent:
{
"responseHeader": {
"status": 0,
"QTime": 0,
"params": {
"q": "solr",
"indent": "true",
"wt": "json",
"_": "1458227751857"
}
},
"response": {
"numFound": 0,
"start": 0,
"docs": []
}
}
如果發(fā)送了一個類似的請求,并添加 echoParams=all 到前面示例中使用的三個參數(shù)中,則會發(fā)生這種情況:
{
"responseHeader": {
"status": 0,
"QTime": 0,
"params": {
"q": "solr",
"df": "text",
"preferLocalShards": "false",
"indent": "true",
"echoParams": "all",
"rows": "10",
"wt": "json",
"_": "1458228887287"
}
},
"response": {
"numFound": 0,
"start": 0,
"docs": []
}
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: