Elasticsearch使用默认的consine 余玄来计算,如何让计算结果分数按照 consine 余弦大小来排序?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在使用阿里云 Elasticsearch 查询时,可以使用 "function_score" 查询来对结果进行排序。具体来说,可以使用 "script_score" 函数并在该函数中指定使用 consine 余弦相似度来计算分数。 比如: "text_vector" 是在 Elasticsearch 中存储的文本向量,"query_vector" 是查询词向量
{
"query": {
"function_score": {
"query": {
"match": {
"text": "your search term"
}
},
"script_score": {
"script": {
"source": "cosineSimilarity(params.query_vector, 'text_vector') + 1.0",
"params": {
"query_vector": [1.0, 2.0, 3.0]
}
}
}
}
}
}
可以使用Spring Shell在Kotlin中构建了一个包装器。它接受一个单词作为输入,从索引中检索相应的向量,然后执行script_score查询根据大小来进行降序排列。