gpt4 book ai didi

regex - Elasticsearch 通配符、regexp、match_phrase、前缀查询返回错误结果

转载 作者:行者123 更新时间:2023-12-04 11:39:34 27 4
gpt4 key购买 nike

我刚刚开始使用 Elasticsearch,版本 7.5.1。
我想查询以特定单词片段开头的结果。
例如 寿 * 应返回包含以下内容的数据:

thought, Thomson, those, etc.


我试过 -
  • 正则表达式
  • [{'regexp':{'f1':'tho.*'}},{'regexp':{'f2':'tho.*'}}]
  • 通配符
  • [{'wildcard':{'f1':'tho*'}},{'wildcard':{'f2':'tho*'}}]
  • 前缀
  • [{'prefix':{'f1':'tho'}},{'prefix':{'f2':'tho'}}]
  • match_phrase
  • 'multi_match': {'query': 'tho', 'fields':[f1,f2,f3], 'type':phrase}
    # also tried with type phrase_prefix
    所有这些都返回正确的结果,但它们也都返回 word 方法。
    同样 * 返回通信这个词。
    我做错了什么?这与 有关吗?分析仪 ?
  • 编辑 -
    这是字段映射 -
  • 'f1': {
    'full_name': 'f1',
    'mapping': {
    'f1': {
    'type': 'text',
    'analyzer': 'some_analyzer',
    'index_phrases': true
    }
    }
    },

    最佳答案

    由于您没有提供您的任何索引映射,并且如上所述,您将收到 method也在搜索结果中。我认为您设置的分析器存在一些问题。
    一种可能是您设置了 ngram tokenizer ,对单词进行标记,并生成 tho 的标记(因为所有单词都包含 tho)
    添加包含索引数据、映射、搜索查询和搜索结果的工作示例
    索引映射:

    {
    "mappings": {
    "properties": {
    "f1": {
    "type": "text"
    }
    }
    }
    }
    索引数据:
    {
    "f1": "method"
    }
    {
    "f1": "thought"
    }
    {
    "f1": "Thomson"
    }
    {
    "f1": "those"
    }
    使用通配符查询的搜索查询:
    {
    "query": {
    "wildcard": {
    "f1": {
    "value": "tho*"
    }
    }
    }
    }
    使用前缀查询的搜索查询:
    {
    "query": {
    "prefix": {
    "f1": {
    "value": "tho"
    }
    }
    }
    }
    使用正则表达式查询的搜索查询:
    {
    "query": {
    "regexp": {
    "f1": {
    "value": "tho.*"
    }
    }
    }
    }
    使用匹配短语前缀查询搜索查询:
    {
    "query": {
    "match_phrase_prefix": {
    "f1": {
    "query": "tho"
    }
    }
    }
    }
    以上4个查询的搜索结果都是
    "hits": [
    {
    "_index": "67673694",
    "_type": "_doc",
    "_id": "1",
    "_score": 1.2039728,
    "_source": {
    "f1": "thought"
    }
    },
    {
    "_index": "67673694",
    "_type": "_doc",
    "_id": "2",
    "_score": 1.2039728,
    "_source": {
    "f1": "Thomson"
    }
    },
    {
    "_index": "67673694",
    "_type": "_doc",
    "_id": "3",
    "_score": 1.2039728,
    "_source": {
    "f1": "those"
    }
    }
    ]

    关于regex - Elasticsearch 通配符、regexp、match_phrase、前缀查询返回错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67673694/

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