从Blacklight运行 Solr 查询时,使用的查询解析器是DisMax查询解析器。但是,在我的solrconfig.xml
文件中配置的查询解析器是EDisMax解析器。出于某种原因,Blacklight 将deftype=dismax
请求发送到 Solr,因此会覆盖deftype=edismax
Solr 配置中定义的所需值。
如何阻止 Blacklight 覆盖deftype
参数?
从Blacklight运行 Solr 查询时,使用的查询解析器是DisMax查询解析器。但是,在我的solrconfig.xml
文件中配置的查询解析器是EDisMax解析器。出于某种原因,Blacklight 将deftype=dismax
请求发送到 Solr,因此会覆盖deftype=edismax
Solr 配置中定义的所需值。
如何阻止 Blacklight 覆盖deftype
参数?
您在使用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
看看它会把你带到哪里。
我认为在 Blacklight 代码中默认设置了 dismax 解析器的使用。但是,您可以通过修改 /app/contollers/catalog_controller.rb 文件并将 defType 设置添加到config.default_solr_params
变量来覆盖它。在此修改后,Blacklight 附带的默认设置如下所示:
config.default_solr_params = {
:qt => 'search',
:rows => 10,
:defType => 'edismax'
}