【问题标题】:Proximity-Relevance in elasticsearch弹性搜索中的邻近相关性
【发布时间】:2020-08-17 16:54:23
【问题描述】:

我在带有字段的弹性搜索中有一条 json 记录

"streetName": "5 Street",
 "name": ["Shivam Apartments"]

我尝试了以下查询,但如果我在查询中添加 streetName bool,它不会返回任何内容

{
    "query": {
        "bool": {
            "must": [
                {
                    "bool": {
                        "must": {
                            "match": {
                                "name": {
                                    "query": "shivam apartments",
                                    "minimum_should_match": "80%"
                                }
                            }
                        }
                    }
                },
                {
                    "bool": {
                        "must": {
                            "match": {
                                "streetName": {
                                    "query": "5 street",
                                    "minimum_should_match": "80%"
                                }
                            }
                        }
                    }
                }
            ]
        }
    }
}

文档映射

{
    "rabc_documents": {
        "mappings": {
            "properties": {
                "name": {
                    "type": "text",
                    "analyzer": "autocomplete_analyzer",
                    "position_increment_gap": 0
                },
                "streetName": {
                    "type": "keyword"
                }
            }
        }
    }
}

【问题讨论】:

  • 能否请您在描述中也添加文档映射?
  • 我使用动态映射尝试了同样的方法,它对我有用。很有可能,您的映射被定义为使用您使用的查询无法搜索此特定文档。
  • @SahilGupta 我已经添加了文档映射
  • @Gibbs .) N-Gram 标记器 b.) 小写、asciifolding、修剪、撇号和停用词标记过滤器 c.) Html_strip 字符过滤器
  • @Gibbs 这会影响 streetName 字段条款吗?

标签: elasticsearch lucene


【解决方案1】:

基于 E.S 文档 (Keywords in Elastic Search)

  • “关键字字段只能按其确切值进行搜索”。
  • 此外,关键字也区分大小写。

考虑到上述情况:

  1. 在关键字字段中搜索“5 street”将不匹配“5 Street”('s' vs 'S')
  2. minimum_should_match 不适用于关键字字段。

建议:对于部分匹配,使用“文本”映射而不是“关键字”。关键字用于过滤、基于术语的聚合等。

【讨论】:

  • 也可以使用Normalizer。
猜你喜欢
  • 2017-08-05
  • 1970-01-01
  • 2022-10-17
  • 1970-01-01
  • 2013-08-22
  • 1970-01-01
  • 1970-01-01
  • 2019-01-24
  • 2021-11-23
相关资源
最近更新 更多