【问题标题】:Using the Extended DisMax query parser in Blacklight在 Blacklight 中使用 Extended DisMax 查询解析器
【发布时间】:2013-08-11 11:04:09
【问题描述】:
从Blacklight 运行 Solr 查询时,使用的查询解析器是 DisMax 查询解析器。但是,在我的solrconfig.xml 文件中配置的查询解析器是EDisMax 解析器。出于某种原因,Blacklight 将请求中的 deftype=dismax 发送到 Solr,因此覆盖了 Solr 配置中定义的所需 deftype=edismax 值。
如何阻止 Blacklight 覆盖 deftype 参数?
【问题讨论】:
标签:
ruby-on-rails
solr
blacklight
【解决方案1】:
你在使用Blacklight's Advanced Search gem吗? dismax 解析器硬编码在高级搜索 gem 中 lib/parsing_nesting 下的 tree.rb 文件中。如果你想使用 edismax 解析器,你必须在“lib”目录下创建一个新的“parsing_nesting”目录。将tree.rb 文件复制到您创建的“parsing_nesting”目录中。简单(但有点难看)的解决方案是将文件中的所有“dismax”替换为“edismax”。更好但更难的解决方案是彻底读取整个文件并更改一些函数签名,以便它们不需要“force_deftype”参数。从 build_nested_query 函数中删除 :force_deftype => "dismax" 开始,看看这会引导你。
【解决方案2】:
我认为在 Blacklight 代码中默认设置了 dismax 解析器的使用。但是,您可以通过修改 /app/contollers/catalog_controller.rb 文件并将 defType 设置添加到 config.default_solr_params 变量来覆盖它。修改后,Blacklight 附带的默认设置如下所示:
config.default_solr_params = {
:qt => 'search',
:rows => 10,
:defType => 'edismax'
}