SOLR FL和Boost参数计算

时间:2019-02-21 19:22:40

标签: boost solr lucene edismax

我的boost参数中有一个非常复杂且很长的功能。此函数将始终返回1到50之间的值。我希望将此函数的结果包含在fl参数中。

第一个问题是,我可以在fl参数中引用boost的结果而不必在fl参数中传递函数AGAIN吗?

第二个问题是:如果我将一个变量分配给boost函数,然后在fl参数中引用此变量,那么SOLR会进行两次计算吗? (我的意思是升压场一次,fl场一次)

我的boost参数函数如下:

boost=sum(div(5,map(abs(sub(x,y)),0,0,VALUE), termfreq(...), dist(2,0,0,x,y),.....)

上面的功能只是一个简单示例,说明了增强功能的外观。此外,该升压功能是动态生成的。 我正在使用edismax和SOLR v7.6

1 个答案:

答案 0 :(得分:0)

参数替换发生在Solr内部发生任何事情之前,因此在这种情况下它将被计算两次。

您可以将cat ~/.bash_history > startup.sh附加到查询字符串中,以获取有关查询的每个部分对得分有多大贡献的详细信息,并且您应该能够从该调试信息中提取应用的提升量(以及避免计算两次)。您可以附加debug=results以获得解释信息,以正确的结构而不是格式化的文本(带有换行符等)返回