W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
請求參數(shù)API允許創(chuàng)建參數(shù)集(又名 paramsets),它可以覆蓋或取代在solrconfig.xml中定義的參數(shù)。
使用此API定義的參數(shù)集可以用于對Solr的請求,也可以直接在 solrconfig.xml 請求處理程序定義中引用。
它實(shí)際上是Config API的另一個端點(diǎn),而不是一個單獨(dú)的API,并且具有不同的命令。它不會替換或修改solrconfig.xml的任何部分,而是提供處理請求中使用的參數(shù)的另一種方法。它的行為方式與Config API相同,通過將參數(shù)存儲在另一個將在運(yùn)行時使用的文件中。在這種情況下,參數(shù)存儲在一個名為params.json的文件中。該文件保存在ZooKeeper中或獨(dú)立的Solr實(shí)例的conf目錄中。
params.json查詢時使用存儲的設(shè)置來覆蓋solrconfig.xml在某些情況下定義的設(shè)置,如下所述。
什么時候可以使用這個功能?請參考以下的幾種情況:
所有請求都被發(fā)送到Config API的/config/params端點(diǎn)。
要設(shè)置、取消設(shè)置或更新請求參數(shù)的請求將作為一組包含名稱的地圖發(fā)送。這些對象可以直接用于請求或請求處理程序定義中使用。
可用的命令有:
如有必要,您可以將這些命令混合成一個請求。
每個映射都必須包含一個名稱,以便以后可以在對 Solr 的直接請求或請求處理程序定義中引用它。
在下面的例子中,我們設(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ù)集之后,可以像下面這樣定義一個請求處理程序:
<requestHandler name="/my_handler" class="solr.SearchHandler" useParams="my_handler_params"/>
它將相當(dāng)于一個標(biāo)準(zhǔn)的請求處理程序定義,例如:
<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)成的請求處理程序,這些處理程序只能通過請求參數(shù)API進(jìn)行配置,因?yàn)樗鼈兊呐渲貌辉趕olrconfig.xml中。在配置隱式請求處理程序時,請參閱Implicit RequestHandlers以使用paramset。
要查看擴(kuò)展的 paramset 和 useParams 定義的 RequestHandler 的有效參數(shù), 請使用 expandParams 請求參數(shù)。例如對于/export請求處理程序:
curl http://localhost:8983/solr/techproducts/config/requestHandler?componentName=/export&expandParams=true
要查看已創(chuàng)建的參數(shù)集,可以使用/config/params端點(diǎn)來讀取params.json請求中的內(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ā)出請求時,useParams參數(shù)將應(yīng)用發(fā)送給請求的請求參數(shù)。這是在請求時間轉(zhuǎn)換為實(shí)際參數(shù)。
例如(使用我們在前面例子中設(shè)置的名字,請用您自己的名字替換):
http://localhost/solr/techproducts/select?useParams=myQueries
可以在相同的請求中傳遞多個參數(shù)集。例如:
http://localhost/solr/techproducts/select?useParams=myFacets,myQueries
在上面的例子中,參數(shù)集“myQueries”被應(yīng)用在“myFacets”的頂部。因此,“myQueries”中的值優(yōu)先于“myFacets”中的值。此外,請求中傳遞的任何值都優(yōu)先于useParams參數(shù)。這就像在 solrconfig. xml 中的 <requestHandler> 定義中所指定的 "defaults"。
參數(shù)集可以直接在請求處理程序定義中使用,如下所示。請注意,即使請求包含 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對象。每個參數(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號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: