我试图为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;
我已尝试过我在文档中找到的其他基本比较函数(gt
,lt
,lte
)。但遇到了同样的问题。
Solr 4.x中是否提供这些功能?我发现的文档并没有具体说明它们引入的版本.Solr 4.x中是否有可用于执行所需比较的函数?
答案 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