3

Blacklight运行 Solr 查询时,使用的查询解析器是DisMax查询解析器。但是,在我的solrconfig.xml文件中配置的查询解析器是EDisMax解析器。出于某种原因,Blacklight 将deftype=dismax请求发送到 Solr,因此会覆盖deftype=edismaxSolr 配置中定义的所需值。

如何阻止 Blacklight 覆盖deftype参数?

4

2 回答 2

1

您在使用Blacklight 的高级搜索 gem吗?dismax 解析器被硬编码在Advanced Search gemtree.rb下的文件中。lib/parsing_nesting如果你想使用 edismax 解析器,你必须在“lib”目录下创建一个新的“parsing_nesting”目录。将tree.rb文件复制到您创建的“parsing_nesting”目录。简单(但有点难看)的解决方案是将文件中的所有“dismax”替换为“edismax”。更好但更难的解决方案是彻底读取整个文件并更改一些函数签名,以便它们不需要“force_deftype”参数。:force_deftype => "dismax"从从函数中删除 开始,build_nested_query看看它会把你带到哪里。

于 2013-08-15T09:24:53.537 回答
0

我认为在 Blacklight 代码中默认设置了 dismax 解析器的使用。但是,您可以通过修改 /app/contollers/catalog_controller.rb 文件并将 defType 设置添加到config.default_solr_params变量来覆盖它。在此修改后,Blacklight 附带的默认设置如下所示:

    config.default_solr_params = { 
      :qt => 'search',
      :rows => 10,
      :defType => 'edismax' 
    }
于 2013-08-12T11:53:30.933 回答