W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
在 Solr 中幾個(gè)查詢解析器可以共享由 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ù)或具有單個(gè)值的任何字段的值對查詢響應(yīng)進(jìn)行排序,該字段具有索引或使用 DocValues 的單個(gè)值(即任何字段,它在架構(gòu)屬性包括multiValued="false",要么 docValues="true" 或 indexed="true"- 如果該字段沒有啟用 DocValues,則使用索引術(shù)語在運(yùn)行時(shí)以動態(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>],…?
如果提供了多個(gè)排序標(biāo)準(zhǔn),則只有在第一個(gè)條目產(chǎn)生并列時(shí)才使用第二個(gè)條目。如果有第三個(gè)條目,則只有在第一個(gè)和第二個(gè)條目是并列的情況下才能使用。這種模式會在之后的條目中繼續(xù)。
指定時(shí),start 參數(shù)指定查詢結(jié)果集中的偏移量,并指示 Solr 開始顯示此偏移量的結(jié)果。
默認(rèn)值是 0。換句話說,默認(rèn)情況下,Solr 返回的結(jié)果沒有偏移量,從結(jié)果開始的地方開始。
將該 start 參數(shù)設(shè)置為某個(gè)其他數(shù)字(例如3,)會導(dǎo)致 Solr 跳過前面的記錄,并從由偏移量標(biāo)識的文檔開始。
您可以使用這個(gè) start 參數(shù)來進(jìn)行分頁。例如,如果 rows 參數(shù)設(shè)置為10,則可以通過將 start 設(shè)置為0來顯示3個(gè)連續(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 個(gè)文檔以響應(yīng)查詢。
fq 參數(shù)定義了一個(gè)查詢,可以用來限制可以返回的文檔的超集,而不影響 score。這對于加快復(fù)雜查詢非常有用,因?yàn)橹付ǖ牟樵?fq 是獨(dú)立于主查詢而被緩存的。當(dāng)以后的查詢使用相同的過濾器時(shí),會有一個(gè)緩存命中,過濾器結(jié)果從緩存中快速返回。
使用該 fq 參數(shù)時(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”可以用來表示特定查詢的每個(gè)文檔的分?jǐn)?shù)應(yīng)該作為字段返回。通配符 * 選擇文檔中的所有字段,它們是 stored="true"、docValues="true" 和 useDocValuesAsStored="true"(當(dāng)啟用 docValues 時(shí),這是默認(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。 |
* |
返回每個(gè)文檔中的所有 stored 字段,以及任何 useDocValuesAsStored="true" 的 docValues 字段。這是 fl 參數(shù)的默認(rèn)值。 |
* score |
返回每個(gè)文檔中的所有字段以及每個(gè)字段的 score。 |
*,dv_field_name |
返回每個(gè)文檔中的所有stored字段,以及任何具有 useDocValuesAsStored =“true” 的 docValues 字段和來自 dv_field_name 的 docValues,即使它具有useDocValuesAsStored =“false”。 |
可以為結(jié)果中的每個(gè)文檔計(jì)算函數(shù),并將其作為偽字段(pseudo-field)返回:
fl=id,title,product(price,popularity)
文檔變換器可以用來修改查詢結(jié)果中每個(gè)文檔返回的信息:
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ù)指定了一個(gè) Lucene 查詢來標(biāo)識一組文檔。如果包含此參數(shù)并設(shè)置為非空值,則查詢將返回調(diào)試信息以及與 Lucene 查詢相匹配的每個(gè)文檔的“說明信息”(相對于主查詢(由 q 指定)參數(shù))。例如:
q=supervillians&debugQuery=on&explainOther=id:juggernaut
上面的查詢允許您檢查頂級匹配文檔的評分解釋信息,將其與 id:juggernaut 文檔匹配的解釋信息進(jìn)行比較,并確定排名不符合您的期望的原因。
這個(gè)參數(shù)的默認(rèn)值是空的,這不會導(dǎo)致返回額外的“解釋信息”。
此參數(shù)指定允許搜索完成的時(shí)間量(以毫秒為單位)。如果此時(shí)間在搜索完成之前到期,任何部分結(jié)果將返回,但如 numFound、facet 數(shù)和結(jié)果的統(tǒng)計(jì)的值可能對整個(gè)結(jié)果集不準(zhǔn)確。
此值僅在以下時(shí)間檢查:
由于此檢查是周期性執(zhí)行的,因此在中止請求之前處理請求的實(shí)際時(shí)間將略微大于或等于 timeAllowed 的值。如果請求在其他階段中花費(fèi)更多時(shí)間,自定義組件等,則不希望此參數(shù)中止請求。
該參數(shù)可以設(shè)置為 true 或 false。
如果設(shè)置為 true,并且如果此集合的 mergePolicyFactory 是 SortingMergePolicyFactory(使用的 sort 選項(xiàng)與此查詢指定的 sort 參數(shù)兼容),則 Solr 將嘗試使用 EarlyTerminatingSortingCollector。
如果提前終止(early termination)使用,一個(gè) segmentTerminatedEarly 標(biāo)題將包含在 responseHeader。
使用類似的 timeAllowed `Parameter, 當(dāng)早期段終止發(fā)生時(shí),例如值 `numFound,F(xiàn)acet 計(jì)數(shù),并導(dǎo)致 Stats 可能不準(zhǔn)確對整個(gè)結(jié)果集。
這個(gè)參數(shù)的默認(rèn)值是 false。
該參數(shù)可以設(shè)置為 true 或 false。
如果設(shè)置為 true,則此參數(shù)將從返回的結(jié)果中排除標(biāo)題。標(biāo)題包含有關(guān)請求的信息,例如完成所需的時(shí)間。該參數(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 接口,則將從該查詢請求收集器,并在匹配主查詢和所有其他過濾器查詢后用于過濾文檔??梢杂卸鄠€(gè)后置過濾器;他們也按成本排序。
例如:
這是一個(gè)正常的函數(shù)范圍查詢,用作過濾器,所有匹配的文件都是預(yù)先生成和緩存的:
fq={!frange l=10 u=100}mul(popularity,price)
這是一個(gè)與傳統(tǒng)的 lucene 過濾器并行運(yùn)行的函數(shù)范圍查詢:
fq={!frange l=10 u=100 cache=false}mul(popularity,price)
這是在每個(gè)已經(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:這個(gè)參數(shù)不僅適用于查詢請求,而且適用于 Solr 的任何類型的請求。
該 echoParams 參數(shù)控制響應(yīng)頭中包含的有關(guān)請求參數(shù)的信息。
該 echoParams 參數(shù)接受以下值:
下面是一個(gè) JSON 響應(yīng)的例子,其中沒有包含 echoParams 參數(shù),所以缺省值 explicit 是活動的。創(chuàng)建此響應(yīng)的請求的 URL 包括三個(gè)參數(shù) - q,wt 和 indent:
{
"responseHeader": {
"status": 0,
"QTime": 0,
"params": {
"q": "solr",
"indent": "true",
"wt": "json",
"_": "1458227751857"
}
},
"response": {
"numFound": 0,
"start": 0,
"docs": []
}
}
如果發(fā)送了一個(gè)類似的請求,并添加 echoParams=all 到前面示例中使用的三個(gè)參數(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)系方式:
更多建議: