从黑灯运行Solr查询时,所使用的查询解析器是DisMax查询解析器。但是,在我的solrconfig.xml文件中配置的查询解析器是EDisMax解析器。由于某些原因,Blacklight在请求中向Solr发送deftype=dismax,因此重写在Solr的配置中定义的所需的deftype=edismax值。
如何阻止Blacklight重写deftype参数?
发布于 2013-08-15 09:24:53
你在用黑光的高级搜索宝石吗?dismax解析器是在Advanced中的tree.rb文件下的lib/parsing_nesting下硬编码的。如果要使用edismax解析器,就必须在"lib“目录下创建一个新的"parsing_nesting”目录。将tree.rb文件复制到您创建的"parsing_nesting“目录中。简单(但有点难看)的解决方案是将文件中的所有"dismax“替换为"edismax”。一个更好但更困难的解决方案是彻底读取整个文件并更改一些函数签名,以便它们不需要"force_deftype“参数。从从:force_deftype => "dismax"函数中移除build_nested_query开始,看看这会导致什么。
发布于 2013-08-12 11:53:30
我认为dismax解析器的使用在Blacklight代码中是默认设置。但是,您可以通过修改/app/contoller/catalog_Controller.rb文件并将defType设置添加到config.default_solr_params变量来重写它。在进行此修改后,Blacklight附带的默认设置如下:
config.default_solr_params = {
:qt => 'search',
:rows => 10,
:defType => 'edismax'
}https://stackoverflow.com/questions/18171242
复制相似问题