首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弹性搜索-查询仅搜索5个字符

弹性搜索-查询仅搜索5个字符
EN

Stack Overflow用户
提问于 2020-10-14 14:01:07
回答 1查看 363关注 0票数 2

我有一个问题,无论我在查询中发送了什么值,在搜索的第五个字符之后,我都不会得到任何结果。

示例:

  • {“匹配”:{“名称”:“benjami”}-将不返回结果
  • {“匹配”:{“名称”:“Benja”}-返回名为Benja的结果.
  • {“匹配”:{“名称”:" Benjamin "}} -返回名称Benjamin的结果

索引:

“名称”:{“类型”:“字符串”,“分析器”:"edge_ngram_analyzer“}

设置:

代码语言:javascript
复制
"analyzer": {
    "edge_ngram_analyzer":{
        "type": "custom", "tokenizer": "standard", "filter": ["lowercase","edge_ngram_filter"]}},
"filter": {
    "edge_ngram_filter":{
        "type": "edge_ngram", "min_gram": 1, "max_gram": 40}}

使用术语向量,我发现字段的索引是正确的。问题在于弹性搜索,而不是搜索我的全部查询值。有人知道为什么会这样吗?非常感谢您的帮助,我使用弹性搜索版本5.6!

索引

代码语言:javascript
复制
"properties" : { "searchid": {"type": "string", "index": "not_analyzed"},
        "otherId": {"type": "string", "analyzer": "edge_ngram_analyzer"},
        "name": {"type": "string", "analyzer": "edge_ngram_analyzer"},
}

设置

代码语言:javascript
复制
"settings": {
        "number_of_replicas": 0,
        "analysis": {
            "filter": {"edge_ngram_filter": {"type": "edge_ngram", "min_gram": 2, "max_gram": 80}},
            "analyzer": {
                "edge_ngram_analyzer": {
                    "type": "custom",
                    "tokenizer": "my_tokenizer",
                    "filter": ["lowercase", "edge_ngram_filter"],
                },
                "short_edge_ngram_analyzer": {
                    "type": "custom",
                    "tokenizer": "standard",
                    "filter": ["lowercase", "edge_ngram_filter"],
                },
                "case_sensitive": {"type": "custom", "tokenizer": "whitespace", "filter": []}
            },
            "tokenizer": {
                "my_tokenizer": {
                  "type": "edge_ngram",
                  "min_gram": 2,
                  "max_gram": 40,
                  "token_chars": [
                    "letter","digit"
                  ]
                }
        },
        },
    },

查询

代码语言:javascript
复制
{'query': 
{'function_score': 
{'query': 
{'bool': {'should': [{'multi_match': {'query': 'A162412350', 'fields': ['otherId']}}}]}}, 
'functions': [{'field_value_factor': {'field': 'positionOrActive', 'modifier': 'none', 'missing': '0', 'factor': '1.1'}}], 'score_mode': 'sum', 'boost_mode': 'sum'}}, 'size': 25}

Doc结果

代码语言:javascript
复制
[{u'otherId': u'A1624903499',
  u'positionOrActive': 0,
  'searchScore': 18.152431,
  u'id': 35631,,
 {u'otherId': u'A1624903783',
  u'positionOrActive': 0,
  'searchScore': 18.152431,
  u'id': 35632,
 {u'otherId': u'A1624904100',
  u'positionOrActive': 0,
  'searchScore': 18.152431,
  u'id': 35633,]

设置

代码语言:javascript
复制
{
  "issuersearch": {
    "settings": {
      "index": {
        "refresh_interval": "1s",
        "number_of_shards": "1",
        "provided_name": "issuersearch",
        "creation_date": "1602687790617",
        "analysis": {
          "filter": {
            "edge_ngram_filter": {
              "type": "edge_ngram",
              "min_gram": "2",
              "max_gram": "80"
            }
          },
          "analyzer": {
            "edge_ngram_analyzer": {
              "filter": Array[2][
                "lowercase",
                "edge_ngram_filter"
              ],
              "type": "custom",
              "tokenizer": "my_tokenizer"
            },
            "short_edge_ngram_analyzer": {
              "filter": Array[2][
                "lowercase",
                "edge_ngram_filter"
              ],
              "type": "custom",
              "tokenizer": "standard"
            },
            "case_sensitive": {
              "type": "custom",
              "tokenizer": "whitespace"
            }
          },
          "tokenizer": {
            "my_tokenizer": {
              "token_chars": Array[2][
                "letter",
                "digit"
              ],
              "min_gram": "2",
              "type": "edge_ngram",
              "max_gram": "40"
            }
          }
        },
        "number_of_replicas": "0",
        "uuid": "dexqFx32RXy-AC3HHpfElA",
        "version": {
          "created": "5060599"
        }
      }
    }
  }
}
EN

回答 1

Stack Overflow用户

发布于 2020-10-14 14:17:02

这可能是由于standard标记器将标记拆分到空白上,您需要提供完整的示例(完整索引映射、示例文档和搜索查询的实际结果来确认它)。

另外,希望您没有在您的分析器字段上使用任何name

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

https://stackoverflow.com/questions/64354983

复制
相关文章

相似问题

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