我有多个查询,我希望结果按查询顺序过滤。
例如,我希望从查询1结果中搜索查询2,从查询2结果中搜索查询3。查询3的结果不应超过查询1的结果。
查询3⊆ 查询2⊆ 查询1
| id | document | category | group |
| -------- | ----- | --- | --- |
| 1 | I want better search | fruit | 1 |
| 2 | I want to watch search movie | fruit | 2 |
| 3 | search movie | animal | 1 |
query1=q(“匹配”,group=“1”)
query2=q(“匹配”,category=“水果”)
query3=q(“匹配”,document=“搜索”)
我想要的只是结果中的文档1。
bool函数似乎会为每个查询赋予相等的权重,例如,它将给出与query3完全匹配的结果,query1没有完全匹配或相关性低,这与query3的顺序不同⊆ 查询2⊆ 查询1。
这是我的密码:
resp = es.search(index='test-vector-index', body={
"query" : {
"bool": {
"must": [
{ "match" : { "group" : "1" }},
{ "match": { "category": "fruit" } },
{ "match": { "document": "search" } },
]
}
}
}
)
他们不像我想的那样工作,请帮我解决这个问题。
谢谢您。
1条答案
按热度按时间vd2z7a6w1#
我不知道你到底想要什么。如果我理解的很好,你可能可以用“过滤器”而不是必须的。
更新之后。这样的查询应该适用于您的示例。