gpt4 book ai didi

elasticsearch - 一个查询中每个映射的不同多重匹配

转载 作者:行者123 更新时间:2023-12-02 23:17:08 24 4
gpt4 key购买 nike

我有4种不同的映射:ABCD

对于映射AB,以下查询可提供最佳结果:

{
"query": {
"bool": {
"should": [
{
"bool": {
"must": [
{
"multi_match": {
"query": "....",
"analyzer": "keyword",
"fuzziness": "AUTO",
"fields": ["name*"]
}
}
]
}
}
]
}
},
"from": 0,
"size": 20
}

对于 C,以下查询可提供最佳结果:
{
"query": {
"bool": {
"should": [
{
"bool": {
"must": [
{
"multi_match": {
"query": "....",
"analyzer": "simple",
"fuzziness": "AUTO",
"use_dis_max": false,
"fields": ["name*"]
}
}
]
}
}
]
}
}
}

对于 D,以下查询可提供最佳结果:
{

"query": {
"bool": {
"should": [
{
"bool": {
"must": [
{
"multi_match": {
"query": "....",
"analyzer": "simple",
"fuzziness": 0,
"use_dis_max": false,
"fields": ["name*"]
}
},
{
"multi_match": {
"query": "....",
"analyzer": "simple",
"fuzziness": 3,
"fields": ["name*"]
}
}
]
}
}
]
}
}
}

我可以进行3个单独的查询并处理结果,但结果很麻烦,而且花费时间更长。是否可以将这三个查询组合为一个查询,并说映射/类型 AB使用第一个多重匹配, C使用第二个匹配, D使用第三个多重匹配。

最佳答案

我使用Type Query在下面想出了。

为简单起见,我仅考虑问题中提到的CD类型的查询。

请注意,我还包括了boost参数,并且以这种方式提及它,即与C类型的文档相比,D类型的文档在结果中总是显得更高。

您可以根据自己的要求进行更改。

询问

POST <your_index_name>/_search
{
"query":{
"bool":{
"should":[
{
"bool":{
"boost":100,
"must":[
{
"multi_match":{
"query":"....",
"analyzer":"simple",
"fuzziness":"AUTO",
"use_dis_max":false,
"fields":[
"name*"
]
}
},
{
"type":{
"value":"C"
}
}
]
}
},
{
"bool":{
"boost":5,
"must":[
{
"type":{
"value":"D"
}
},
{
"multi_match":{
"query":"....",
"analyzer":"simple",
"fuzziness":0,
"use_dis_max":false,
"fields":[
"name*"
]
}
},
{
"multi_match":{
"query":"....",
"analyzer":"simple",
"fuzziness":3,
"fields":[
"name*"
]
}
}
]
}
}
]
}
}
}

让我知道这是否有帮助!

关于elasticsearch - 一个查询中每个映射的不同多重匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53410488/

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