Elasticsearch word_delimiter过滤器与大写标记不匹配

问题描述 投票:1回答:1

我使用自定义分析器构建了一个ElasticSearch索引,该分析器使用lowercase和自定义word_delimiter过滤器和keyword标记器。

"merged_analyzer": {
   "type": "custom",
   "tokenizer": "keyword",
   "filter": [
     "lowercase",
     "asciifolding",
     "word_delim",
     "trim"
   ]
},
"merged_search_analyzer": {
    "type": "custom",
    "tokenizer": "keyword",
    "filter": [
      "lowercase",
      "asciifolding"
    ]
}

"word_delim": {
   "type": "word_delimiter",
   "catenate_words": true,
   "generate_word_parts": false,
   "generate_number_parts": false,
   "preserve_original": true
}

"properties": {
  "lastName": {
    "type": "keyword",
    "normalizer": "keyword_normalizer",
    "fields": {
      "merged": {
        "type": "text",
        "analyzer": "merged_analyzer",
        "search_analyzer": "merged_search_analyzer"
      }
    }
  }
}

然后我尝试搜索包含破折号子词的文档,例如'Abc-Xyz'。使用.merged字段。 'abc-xyz''abcxyz'(小写)都匹配,这正是我的预期,但我希望我的分析仪也匹配大写字母或空格(例如'Abc-Xyz''abc-xyz ')。

似乎过滤器trimlowercase对我的分析仪没有影响

知道我可能做错了吗?

我使用弹性6.2.4

elasticsearch search delimiter
1个回答
1
投票

我不确定,但可能是搜索分析器与索引分析器不同。你可以做两件事来检查这个。

  1. 配置search_analyzer:https://www.elastic.co/guide/en/elasticsearch/reference/6.2/search-analyzer.html,它将使用merged_analyzer进行分析。
  2. 使用Analyze API:https://www.elastic.co/guide/en/elasticsearch/reference/6.2/indices-analyze.html以检查您的搜索令牌是否符合预期。
© www.soinside.com 2019 - 2024. All rights reserved.