gpt4 book ai didi

elasticsearch - 多匹配 Elasticsearch 在 bool 查询中的模糊性

转载 作者:行者123 更新时间:2023-12-03 00:38:59 24 4
gpt4 key购买 nike

我正在使用Elasticsearch 6.3.0版。我想同时使用模糊度和多重匹配。但这是没有选择的。有人可以为我提供解决方案吗?提前致谢
查询:

    {   "query": {
"bool": {
"must": [
{"function_score": {
"query": {
"multi_match": {
"query": "local",
"fields": [
"user.name^3",
"main_product"
],
"type": "phrase"
}
}
}}
],
"filter": {
"geo_distance": {
"distance": "1000km",

"user.geolocation": {
"lat": 25.55,
"lon": -84.44
}
}
}
}
} }

最佳答案

查看您现有的查询,您正在寻找以下各项的组合

  • 基于字段
  • 的提升
  • 多字段匹配
  • 词组匹配
  • 模糊匹配

  • 如果不是 phrase_match,则只需在现有查询中添加 "fuzziness": "AUTO""fuzziness":1 or whatever number based on your requirement,即可获得所需的内容。

    模糊无短语
    POST <your_index_name>/_search
    {
    "query":{
    "bool":{
    "must":[
    {
    "function_score":{
    "query":{
    "multi_match":{
    "query":"local",
    "fields":[
    "user.name^3",
    "main_product"
    ],
    "fuzziness":"AUTO"
    }
    }
    }
    }
    ],
    "filter":{
    "geo_distance":{
    "distance":"1000km",
    "user.geolocation":{
    "lat":25.55,
    "lon":-84.44
    }
    }
    }
    }
    }
    }

    词组模糊:

    在这种情况下,您需要使用 Span Queries

    为了简单起见,我放弃了过滤部分,并提出了以下查询。假设我正在搜索名为 pearl jam的短语。
    POST <your_index_name>/_search
    {
    "query":{
    "function_score":{
    "query":{
    "bool":{
    "should":[
    {
    "bool":{
    "boost":3,
    "must":[
    {
    "span_near":{
    "clauses":[
    {
    "span_multi":{
    "match":{
    "fuzzy":{
    "user.name":"pearl"
    }
    }
    }
    },
    {
    "span_multi":{
    "match":{
    "fuzzy":{
    "user.name":"jam"
    }
    }
    }
    }
    ],
    "slop":0,
    "in_order":true
    }
    }
    ]
    }
    },
    {
    "bool":{
    "boost":1,
    "must":[
    {
    "span_near":{
    "clauses":[
    {
    "span_multi":{
    "match":{
    "fuzzy":{
    "main_product":"pearl"
    }
    }
    }
    },
    {
    "span_multi":{
    "match":{
    "fuzzy":{
    "main_product":"jam"
    }
    }
    }
    }
    ],
    "slop":0,
    "in_order":true
    }
    }
    ]
    }
    }
    ]
    }
    }
    }
    }
    }

    所以我正在做的是基于多字段短语中的字段执行增强,对短语 pearl jam进行模糊匹配。

    拥有 slop: 0in_order:true将使我能够对子句中指定的单词进行词组匹配。

    让我知道您是否有任何疑问。

    关于elasticsearch - 多匹配 Elasticsearch 在 bool 查询中的模糊性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53407151/

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