Elastic Search FVH выделяет наименьший соответствующий токен

Настройки:

{
  "settings": {
    "analysis": {
      "analyzer": {
        "idx_analyzer_ngram": {
          "type": "custom",
          "filter": [
            "lowercase",
            "asciifolding",
            "edgengram_filter_1_32"
          ],
          "tokenizer": "ngram_alltokenchar_tokenizer_1_32"
        },
        "ngrm_srch_analyzer": {
          "filter": [
            "lowercase"
          ],
          "type": "custom",
          "tokenizer": "keyword"
        }
      },
      "tokenizer": {
        "ngram_alltokenchar_tokenizer_1_32": {
          "token_chars": [
            "letter",
            "whitespace",
            "punctuation",
            "symbol",
            "digit"
          ],
          "min_gram": "1",
          "type": "nGram",
          "max_gram": "32"
        }
      }
    }
  }
}

Отображения:

{
  "properties": {
    "TITLE": {
      "type": "string",
      "fields": {
        "untouched": {
          "index": "not_analyzed",
          "type": "string"
        },
        "ngramanalyzed": {
          "search_analyzer": "ngrm_srch_analyzer",
          "index_analyzer": "idx_analyzer_ngram",
          "type": "string",
          "term_vector": "with_positions_offsets"
        }
      }
    }
  }
}

Запрос:

{
  "query": {
    "filtered": {
      "query": {
        "query_string": {
          "query": "have some ha",
          "fields": [
            "TITLE.ngramanalyzed"
          ],
          "default_operator": "and"
        }
      }
    }
  },
  "highlight": {
    "fields": {
      "TITLE.ngramanalyzed": {}
    }
  }
}

У меня есть документ, проиндексированный с названием TITLE, есть какая-то счастливая еда. Когда я ищу что-то, я могу получить правильные результаты.

<em>have</em> <em>some</em> happy meal

По мере того, как я набираю больше, у меня есть несколько гектаров, результаты выделения не соответствуют ожидаемым.

<em>ha</em>ve <em>some</em> <em>ha</em>ppy meal

Имеющее слово частично выделяется как ха.

Я ожидал бы, что он выделит самый длинный совпадающий токен, потому что с ngrams с минимальным размером = 1 это дает мне подсветку 1 или более символов, в то время как должен быть другой совпадающий токен из 4 или 5 символов (например , должен иметь также быть выделенным вместе с выделением.

Я не могу найти решение для того же. Пожалуйста, предложите.

0 ответов

Другие вопросы по тегам