gpt4 book ai didi

ElasticSearch:在单个查询中组合 bool 和 script_score

转载 作者:行者123 更新时间:2023-12-05 05:46:04 26 4
gpt4 key购买 nike

我有一个现有的弹性 bool 查询。我在索引中添加了一个密集向量场,并希望在一个查询中搜索所有内容。 Elastic 文档的复合查询部分似乎暗示你可以这样做,但我无法让它工作(我收到运行时错误)并且找不到任何示例。这是我正在尝试的简化版本。

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}
}
}
}
]
}

我将不胜感激任何建议、指向示例的指针,甚至是一个简单的“不,你不能那样做”。

谢谢霍华德

最佳答案

尝试做同样的事情,我最终发现你可以 access the score from within the script .因此,您可以将“应该”子句中返回的分数添加到余弦相似度的分数中。此外,我将 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
}
}
}
}

关于ElasticSearch:在单个查询中组合 bool 和 script_score,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71238973/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com