Solr 比较函数报告 "Unknown function"

Solr comparison functions report "Unknown function"

我正在尝试为 Solr 4.x 服务器编写一个相当基本的增强函数。

我希望我的 boost 函数能这样工作(伪代码)

if (weight >= 700) boost = 1.5

我传递给 Solr 的 boost 函数如下

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

我在通过 Solr 管理员提交查询时收到以下错误消息 UI。

"org.apache.solr.search.SyntaxError: Unknown function gte in FunctionQuery('if(gte(weight,700),1.5,1)', pos=7)"

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

这些函数在 Solr 4.x 中可用吗?我找到的文档没有具体说明它们是在哪个版本中引入的。Solr 4.x 中是否有任何函数可以执行所需的比较?

您提到的函数是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