【发布时间】:2015-08-18 02:51:38
【问题描述】:
我有一个包含各种成员文档的弹性搜索索引。每个成员文档都包含一个成员资格对象,以及与/描述个人成员资格相关的各种字段。例如:
{membership:{'join_date':2015-01-01,'status':'A'}}
会员状态可以是“A”(活跃)或“I”(不活跃);两个 Unicode 字符串值。我有兴趣稍微提高包含有效成员身份的文档的分数。
在我的 groovy 脚本中,以及各种数字字段上的其他自定义助推器,我添加了以下内容:
String status = doc['membership.status'].value;
float status_boost = 0.0;
if (status=='A') {status_boost = 2.0} else {status_boost=0.0};
return _score + status_boost
由于某些与字符串如何通过 groovy 操作相关的原因,检查 (status=='A') 不起作用。我尝试了(status.toString()=='A')、(status.toString()=="A")、(status.equals('A')),以及许多其他变体。
我应该如何解决这个问题(以高效的方式)?我没有 groovy 的独立安装,但是当我在 python 中提取响应数据时,状态非常好,所以要么是 Unicode 'A' 要么 'I' 没有额外的间距或字符。
【问题讨论】:
-
Are you sure the value is 'A' ,因为经过分析,这可能已更改为小 ;a' 。您可以尝试一下吗?
-
你说的完全正确——谢谢。
标签: groovy elasticsearch