【发布时间】:2015-08-31 19:03:40
【问题描述】:
我有一个包含语言代码字段的 Elasticsearch 映射,例如EN、DE、ES、FR 等。如果用户以英语开始搜索,我想在搜索结果中提升所有英文文档;法语、西班牙语、德语等也一样。
我猜,script_score 是要走的路:
"script_score" : {
"script" : "_score * doc['my_numeric_field'].value"
}
但是,我需要比较每个索引文档的语言代码。将LANG作为用户的当前语言代码,可能如下所示:
"script_score" : {
"script" : "_score * ("+LANG+" == doc['lang'].value ? 2 : 1)"
}
这里的本质是一个三元运算符,以便在其语言与当前用户的语言匹配的情况下将相关文档提升两倍:
LANG == doc['lang'] ? 2 : 1
到目前为止,任何这样的函数都被 ES 简单地忽略了。
【问题讨论】:
标签: function search boost elasticsearch