在Blacklight中使用Extended DisMax查询解析器

时间:2013-08-11 11:04:09

标签: ruby-on-rails solr blacklight

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

如何阻止Blacklight覆盖deftype参数?

2 个答案:

答案 0 :(得分:1)

您使用的是Blacklight's Advanced Search gem吗? dismax解析器在高级搜索gem中的tree.rb下的lib/parsing_nesting文件中进行了硬编码。如果要使用edismax解析器,则必须在“lib”目录下创建新的“parsing_nesting”目录。将tree.rb文件复制到您创建的“parsing_nesting”目录中。简单(但有点丑陋)的解决方案是用文件中的“edismax”替换所有“dismax”。一个更好但更难的解决方案是彻底读取整个文件并更改一些函数签名,以便它们不需要“force_deftype”参数。首先从:force_deftype => "dismax"功能中移除build_nested_query,然后查看它引导您的位置。

答案 1 :(得分:0)

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

    config.default_solr_params = { 
      :qt => 'search',
      :rows => 10,
      :defType => 'edismax' 
    }