Solr比较函数报告"未知函数"

时间:2016-09-27 08:04:58

标签: solr solr4

我试图为Solr 4.x服务器编写一个合理的基本升压功能。

我希望我的boost函数能够正常工作(伪代码)

if (weight >= 700) boost = 1.5

传递给Solr的增强功能如下

if(gte(weight,700),1.5,1)

通过Solr管理界面提交查询时收到以下错误消息。

  

" org.apache.solr.search.SyntaxError:FunctionQuery中的未知函数gte(' if(gte(weight,700),1.5,1)',pos = 7)& #34;

我已尝试过我在文档中找到的其他基本比较函数(gtltlte)。但遇到了同样的问题。

Solr 4.x中是否提供这些功能?我发现的文档并没有具体说明它们引入的版本.Solr 4.x中是否有可用于执行所需比较的函数?

1 个答案:

答案 0 :(得分:3)

您提到的功能是added in 6.2.0

您可以将查询重写为类似if(max(0, sub(weight, 700)), 1.5, 1.0)的内容 - 如果值小于700,则使用0 - if测试将失败并给出1.0。否则它将使用实际值,并将被评估为true,并给出1.5。如果您需要gte,请将700替换为699或任何最小步长。示例和逐步计算:

weight = 800

sub(weight, 700) => 100
max(0, 100) => 100
if (100) => 1.5

或者如果你的体重低于700:

weight = 698

sub(weight, 698) => -2
max(0, -2) => 0
if (0) => 1.0