W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
請(qǐng)求參數(shù)API允許創(chuàng)建參數(shù)集(又名 paramsets),它可以覆蓋或取代在solrconfig.xml中定義的參數(shù)。
使用此API定義的參數(shù)集可以用于對(duì)Solr的請(qǐng)求,也可以直接在 solrconfig.xml 請(qǐng)求處理程序定義中引用。
它實(shí)際上是Config API的另一個(gè)端點(diǎn),而不是一個(gè)單獨(dú)的API,并且具有不同的命令。它不會(huì)替換或修改solrconfig.xml的任何部分,而是提供處理請(qǐng)求中使用的參數(shù)的另一種方法。它的行為方式與Config API相同,通過將參數(shù)存儲(chǔ)在另一個(gè)將在運(yùn)行時(shí)使用的文件中。在這種情況下,參數(shù)存儲(chǔ)在一個(gè)名為params.json的文件中。該文件保存在ZooKeeper中或獨(dú)立的Solr實(shí)例的conf目錄中。
params.json查詢時(shí)使用存儲(chǔ)的設(shè)置來覆蓋solrconfig.xml在某些情況下定義的設(shè)置,如下所述。
什么時(shí)候可以使用這個(gè)功能?請(qǐng)參考以下的幾種情況:
所有請(qǐng)求都被發(fā)送到Config API的/config/params端點(diǎn)。
要設(shè)置、取消設(shè)置或更新請(qǐng)求參數(shù)的請(qǐng)求將作為一組包含名稱的地圖發(fā)送。這些對(duì)象可以直接用于請(qǐng)求或請(qǐng)求處理程序定義中使用。
可用的命令有:
如有必要,您可以將這些命令混合成一個(gè)請(qǐng)求。
每個(gè)映射都必須包含一個(gè)名稱,以便以后可以在對(duì) Solr 的直接請(qǐng)求或請(qǐng)求處理程序定義中引用它。
在下面的例子中,我們?cè)O(shè)置了兩組名為“myFacets”和“myQueries”的參數(shù):
curl http://localhost:8983/solr/techproducts/config/params -H 'Content-type:application/json' -d '{
"set":{
"myFacets":{
"facet":"true",
"facet.limit":5}},
"set":{
"myQueries":{
"defType":"edismax",
"rows":"5",
"df":"text_all"}}
}'
在上面的示例中,所有參數(shù)都等效于 solrconfig. xml 中的 "defaults"??梢蕴砑硬蛔兞坎⒆芳尤缦?
curl http://localhost:8983/solr/techproducts/config/params -H 'Content-type:application/json' -d '{
"set":{
"my_handler_params":{
"facet.limit":5,
"_invariants_": {
"facet":true,
},
"_appends_":{"facet.field":["field1","field2"]
}
}}
}'
在上面的章節(jié)中創(chuàng)建了my_handler_params 參數(shù)集之后,可以像下面這樣定義一個(gè)請(qǐng)求處理程序:
<requestHandler name="/my_handler" class="solr.SearchHandler" useParams="my_handler_params"/>
它將相當(dāng)于一個(gè)標(biāo)準(zhǔn)的請(qǐng)求處理程序定義,例如:
<requestHandler name="/my_handler" class="solr.SearchHandler">
<lst name="defaults">
<int name="facet.limit">5</int>
</lst>
<lst name="invariants">
<bool name="facet">true</bool>
</lst>
<lst name="appends">
<arr name="facet.field">
<str>field1</str>
<str>field2</str>
</arr>
</lst>
</requestHandler>
Solr附帶有許多現(xiàn)成的請(qǐng)求處理程序,這些處理程序只能通過請(qǐng)求參數(shù)API進(jìn)行配置,因?yàn)樗鼈兊呐渲貌辉趕olrconfig.xml中。在配置隱式請(qǐng)求處理程序時(shí),請(qǐng)參閱Implicit RequestHandlers以使用paramset。
要查看擴(kuò)展的 paramset 和 useParams 定義的 RequestHandler 的有效參數(shù), 請(qǐng)使用 expandParams 請(qǐng)求參數(shù)。例如對(duì)于/export請(qǐng)求處理程序:
curl http://localhost:8983/solr/techproducts/config/requestHandler?componentName=/export&expandParams=true
要查看已創(chuàng)建的參數(shù)集,可以使用/config/params端點(diǎn)來讀取params.json請(qǐng)求中的內(nèi)容或使用該名稱:
curl http://localhost:8983/solr/techproducts/config/params
#Or use the paramset name
curl http://localhost:8983/solr/techproducts/config/params/myQueries
發(fā)出請(qǐng)求時(shí),useParams參數(shù)將應(yīng)用發(fā)送給請(qǐng)求的請(qǐng)求參數(shù)。這是在請(qǐng)求時(shí)間轉(zhuǎn)換為實(shí)際參數(shù)。
例如(使用我們?cè)谇懊胬又性O(shè)置的名字,請(qǐng)用您自己的名字替換):
http://localhost/solr/techproducts/select?useParams=myQueries
可以在相同的請(qǐng)求中傳遞多個(gè)參數(shù)集。例如:
http://localhost/solr/techproducts/select?useParams=myFacets,myQueries
在上面的例子中,參數(shù)集“myQueries”被應(yīng)用在“myFacets”的頂部。因此,“myQueries”中的值優(yōu)先于“myFacets”中的值。此外,請(qǐng)求中傳遞的任何值都優(yōu)先于useParams參數(shù)。這就像在 solrconfig. xml 中的 <requestHandler> 定義中所指定的 "defaults"。
參數(shù)集可以直接在請(qǐng)求處理程序定義中使用,如下所示。請(qǐng)注意,即使請(qǐng)求包含 useParams,也始終應(yīng)用指定的 useParams。
<requestHandler name="/terms" class="solr.SearchHandler" useParams="myQueries">
<lst name="defaults">
<bool name="terms">true</bool>
<bool name="distrib">false</bool>
</lst>
<arr name="components">
<str>terms</str>
</arr>
</requestHandler>
總而言之,安照以下順序應(yīng)用參數(shù):
可以使用SolrConfig#getRequestParams()方法訪問RequestParams對(duì)象。每個(gè)參數(shù)可以通過使用RequestParams#getRequestParams(String name)方法的名稱來訪問。
Solr 的 "films" 示例演示了參數(shù) API 的使用。您可以在 Solr 安裝中使用此示例 (在example/films目錄中),或在 https://github.com/apache/lucene-solr/tree/master/solr/example/films 中查看 Apache GitHub 鏡像中的文件。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: