Solr 函数查询 : gte, lte,eq 函数

标签 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)

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

任何人都可以给我提示使用 FunctionQuery 构建我想要的逻辑吗?

谢谢!

最佳答案

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

actually you need to switch the arguments. exposure_count = 0 is interpreted as false. So your condition would be {!boost b=if(exposure_count,div(1,exposure_count),1)}"



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

Solr官方wiki是正确的。

关于Solr 函数查询 : gte, lte,eq 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15513394/

相关文章:

json - 如何使用 Solr 索引哈希数组

java - Sunspot::Solr::Server::JavaMissing:您需要一个 Java 运行时环境来运行 Solr 服务器

java - hello world solj 程序给了我一个异常 'bad request'

search - 使用 dismax 处理程序进行通配符搜索?

solr - 如何设置Apache Solr管理员密码

solr - Apache Solr 中的相关反馈

search - 解决方案 4.1 java.lang.IllegalArgumentException : first position increment must be > 0 (got 0)

java - Alfresco solr 跟踪失败

search - 复杂的 SOLR 查询,包括 NOT 和 OR

solr - 在 solr 查询中排序之前如何通过分数进行限制