【问题标题】:How to use solrj with the DismaxRequestHandler?如何将 solr 与 Dismal RequestHandler 一起使用?
【发布时间】:2011-11-15 08:19:12
【问题描述】:

由于缺乏适当的文档,我无法弄清楚如何将 dismaxRequestHandler 与 SolrJ 一起使用。

另一方面,标准请求处理程序是 SolrJ 实现中的默认值吗?

【问题讨论】:

    标签: java solr solrj edismax dismax


    【解决方案1】:

    solrconfig.xml 中的default="true" 决定哪个是默认请求处理程序。 在使用 solr 的示例中,标准请求处理程序是默认的。

    <requestHandler name="search" class="solr.SearchHandler" default="true">
    .....
    </requestHandler>
    

    您可以轻松地将此属性映射到其他请求处理程序以使其成为默认值。

    以 edismax 为例 -

    <requestHandler name="/browse" class="solr.SearchHandler" default="true">
     <lst name="defaults">
       <str name="echoParams">explicit</str>
       <str name="defType">edismax</str>
       <str name="q.alt">*:*</str>
       <str name="rows">10</str>
       <str name="fl">*,score</str>
       <str name="qf">
          text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4
       </str>
     </lst>
    </requestHandler>
    

    qt 参数可以和 Solrj 一起使用,通过特定的请求处理程序进行查询。

    Solrj 示例 -

    CommonsHttpSolrServer commonsHttpSolrServer = new CommonsHttpSolrServer("solr_path_url");
    commonsHttpSolrServer.setParser(new XMLResponseParser());
    ModifiableSolrParams params = new ModifiableSolrParams();
    // Specify the Request handler
    params.add("qt", "dismax_request_handler");
    params.add("q", "query_string");
    QueryResponse response = commonsHttpSolrServer.query(params);
    

    【讨论】:

    • 感谢您的帮助。我之前应该澄清一下,我使用的是 Solr 1.4 和 edismax,因为我知道仅在 3.1 之后才启用。在 requestHandler 只是 dismax 的情况下,相同的设置是否也适用于 Solr1.4?我还应该担心注释掉“ text^0.2 features^1.1 name^1.5 manu^1.4 manu_exact^1.9" 的东西吗?
    • 是的 .. 只需将 edismax 更改为 dismax,其他一切都可以正常工作。您可以评论 pf 这基本上是短语匹配的提升开始,然后微调您的相关性。
    猜你喜欢
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    • 2013-02-26
    • 2021-10-19
    • 2019-10-28
    相关资源
    最近更新 更多