在solr

时间:2017-12-26 10:52:36

标签: solr

我正在使用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=

我在这里错过了什么?

2 个答案:

答案 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);
    }
}