Фильтр Elasticsearch word_delimiter с маркером в верхнем регистре не совпадает - PullRequest
0 голосов
/ 11 февраля 2019

Я построил индекс 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 ').

Itпохоже, что фильтры trim и lowercase не влияют на мой анализатор

Есть идеи, что я могу делать неправильно?

Я использую эластичный 6.2.4

1 Ответ

0 голосов
/ 11 февраля 2019

Я не уверен, но, возможно, анализатор поиска отличается от анализатора индекса.Есть две вещи, которые вы можете сделать, чтобы проверить это.

  1. настроить search_analyzer: https://www.elastic.co/guide/en/elasticsearch/reference/6.2/search-analyzer.html, который будет анализироваться с использованием вашего merged_analyzer.

  2. используйте API анализа: https://www.elastic.co/guide/en/elasticsearch/reference/6.2/indices-analyze.html, чтобы проверить, соответствуют ли ваши поисковые токены ожидаемым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...