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