我有一个现有的弹性bool查询。我在索引中添加了一个密集的向量字段,并希望在一个查询中搜索它。弹性文档的复合查询部分似乎意味着您可以这样做,但是我无法使它工作(我得到了一个运行时错误),并且没有找到任何示例。以下是我正在尝试的一个简化版本。
localQuery = {
'bool':
'should': [
{
"match_phrase": {
"field1": {
"query": query,
"boost": 10
}
}
},
{
"match_phrase": {
"field2": {
"query": query,
"boost": 6
}
}
},
{
"script_score": {
"query": {
"match_all": {}
},
"script": {
"source": "cosineSimilarity(params.element_desc_vector,
'description_vec') + 1.0",
"params": {"element_desc_vector": queryList}
}
}
}
]
}我希望有任何建议,一些例子,甚至是一个单位“不,你不能那样做”。
谢谢霍华德
发布于 2022-10-31 11:50:53
为了做同样的事情,我终于发现你可以从脚本中访问得分了。因此,您可以将在“应该”子句中返回的分数添加到余弦相似项中。另外,我把bool子句放在script_score中,而不是反之亦然。
local_query = {
"script_score": {
"query": {
"bool": {
"should": [
{
"match_phrase": {
"field1": {
"query": query,
"boost": 10
}
}
},
{
"match_phrase": {
"field2": {
"query": query,
"boost": 6
}
}
}
]
}
},
"script": {
"source": "(cosineSimilarity(params.element_desc_vector, 'description_vec') + 1.0) + _score",
"params": {
"element_desc_vector": queryList
}
}
}
}https://stackoverflow.com/questions/71238973
复制相似问题