Solr FunctionQuery:gte,lte,eq函数

ckh*_*ckh 6 solr

Solr FunctionQuery具有DIV(x,y)函数.如果y = 0,我有这样的需要,那么y应该等于x.

换句话说,我需要用FunctionQuery表示以下逻辑:

if y == 0, return 1 /* i.e. DIV(x,x) */
else, return DIV(x,y)
Run Code Online (Sandbox Code Playgroud)

不知何故,从Solr doc,我找不到任何比较函数,例如EQ(x,value)等供我使用.

是否有人能够使用FunctionQuery为我提供构建所需逻辑的提示?

谢谢!

ckh*_*ckh 4

为了清理这个问题并记录我的最终解决方案是什么,感谢 Srikanth Venugopalan 评论:

实际上你需要切换参数。Exposure_count = 0 被解释为 false。所以你的条件是 {!boost b=if(exposure_count,div(1,exposure_count),1)}"

看起来,Lucid 的作品文档确实有一个错误。FunctionQuery 解析器不接受 == 等比较运算符,至少这是我通过查看源代码发现的。另外,IF() 函数的字段分隔符应该是,(逗号)而不是;(分号)。

Solr 官方wiki是正确的。