我正在使用solr-php-client,它的默认请求处理程序是select
除非我更改代码本身,否则无法更改它。但是,有参数qt
。我更新了solrconfig
以包含<requestDispatcher handleSelect="true" >
,我尝试在/
中使用带有或不带solrconfig
的请求处理程序名称以及带有qt
参数的网址。
此链接正常:solr_server_port_index/custom?q=
虽然不是:solr_server_port_index/select?qt=custom&q=
这个solr_server_port_index/select?qt=/custom&q=
我在这里错过了什么?
答案 0 :(得分:0)
Solr使用qt参数来确定应该使用哪个查询处理程序来处理请求。有效值是solrconfig.xml中声明指定的任何名称。 如果我们不能指定qt参数,那么solrConfig.xml中必须有一个请求处理程序用于给定的请求。
my experiments with solr 1.4 with qt parameter is mentioned below
<requestHandler name="/ana" class="solr.DisMaxRequestHandler" >
......
</requestHandler>
http://url:8081/solr/select?wt=xml&q=questionDetail:question&start=0&rows=10&qt=/ana
working fine
http://url:8081/solr/ana?wt=xml&q=questionDetail:question&start=0&rows=10
working fine
http://anaplatha.99.jsb9.net:8081/solr/select?wt=xml&q=questionDetail:question&start=0&rows=10&qt=\ana
error : HTTP Status 400 - unknown handler: \ana(this error I am getting for any value of qt which is != /ana)
references ::
https://wiki.apache.org/solr/CoreQueryParameters
https://issues.apache.org/jira/browse/SOLR-3161
答案 1 :(得分:0)
要解决solr-php-client
(我创建issue #6 to track this)缺少的可配置性,您可以扩展Service类并覆盖_constructUrl
方法以检测对select
的调用 - 并用您自己的请求处理程序替换它。修改此示例以将请求处理程序名称作为自定义->setRequestHandler
,或者您想要修复它:
class Custom_RequestHandler_Solr extends Apache_Solr_Service {
public function _constructUrl($servlet, $params = []) {
if ($servlet == 'select') {
$servlet = 'mycustomrequesthandler';
}
return parent::_constructUrl($servlet, $params);
}
}