首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >许多人必须使用multi_match

许多人必须使用multi_match
EN

Stack Overflow用户
提问于 2020-03-27 18:00:07
回答 3查看 55关注 0票数 1

我有这样的疑问:

代码语言:javascript
运行
复制
{
    "query": {
        "bool": {
            "must": [
                {
                    "match": {
                        "egyik": {
                            "query": "piros alma"
                        }
                    }
                },
                {
                    "match": {
                        "masik": {
                            "query": "piros alma"
                        }
                    }
                }
            ]
        }
    }
}

它不是很漂亮,因为查询参数出现了两次,因此我尝试用multi_match语法重写它:

代码语言:javascript
运行
复制
{
    "query": {
        "bool": {
            "must": {
                "multi_match": {
                    "query": "piros alma",
                    "fields": [
                        "egyik",
                        "masik"
                    ]
                }
            }
        }
    }
}

但它返回的点击量比第一个更多。我尝试了operator,minimum_should_match修饰符,但没有帮助。如何用multi_match解决同样的问题?

EN

回答 3

Stack Overflow用户

发布于 2020-03-27 19:16:05

据我所知,当提供的query与列出的field中的任何一个匹配时,所有类型的多匹配查询都会返回命中(参见Elastic docs)。因此,multi_match之所以有更多的hists,是因为您不能在第一个查询中强制执行相同的布尔条件。也就是说,我不认为将同一个查询参数重复两次有什么错。如果您想稍微推广一下,您可能需要考虑使用Search Templates

票数 0
EN

Stack Overflow用户

发布于 2020-03-27 19:17:49

默认情况下使用operator OR,这意味着查询术语可以出现在任何字段中,如果您希望查询术语出现在所有字段中,那么您可以显式地定义具有AND值的operator字段。

代码语言:javascript
运行
复制
{
"query": {
    "bool": {
        "must": {
            "multi_match": {
                "query": "piros alma",
                "fields": [
                    "egyik",
                    "masik"
                ],
                "operator":"and"
            }
        }
    }
}
}

要了解更多信息,请访问this

票数 0
EN

Stack Overflow用户

发布于 2020-03-27 20:29:11

与此同时,我找到了解决方案:

代码语言:javascript
运行
复制
{
    "query": {
        "bool": {
            "must": {
                "multi_match": {
                    "query": "piros alma",
                    "fields": [
                        "egyik",
                        "masik"
                    ],
                    "type": "cross_fields",
                    "operator": "and"
                }
            }
        }
    }
}

需要同时使用类型和运算符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60883706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档