Как настроить поиск с побуквенной подсветкой и поиска в не зависимости от их расположения в тексте

Всем привет!

Подскажите, как настроить поиск для побуквенной подсветки и поиска слов в не зависимости от их расположения в тексте.

Например текст: "Купить яблоки в магазине ХХХ"
Нужно найти по словам: "Купить яблоки", "Купить в магазине", "Яблоки ХХХ", "ХХХ яблоки", "ХХХ купить яблоки", "Купить ХХХ"

Настройки индекса на данный момент.

Настройки анализатора
"char_filter" : {
	"char_mapping" : {
		"type" : "mapping",
		"mappings" : [
			"Ё => Е",
			"ё => е"
		]
	},
},
"analyzer" : {
	"ngram" : {
		"filter" : [
			"lowercase"
		],
		"char_filter" : [
			"html_strip",
			"char_mapping"
		],
		"type" : "custom",
		"tokenizer" : "ngram"
	},
	
},
"tokenizer" : {
	"ngram" : {
		"token_chars" : [
			"letter",
			"digit",
			"symbol",
		],
		"min_gram" : "2",
		"type" : "edge_ngram",
		"max_gram" : "20"
	},
}

Подсветка работает как надо, но ищет только в прямой последовательности.

После эксперементов, получил

Настройки анализатора
"filter" : {
	"ngram" : {
		"token_chars" : [
			"letter",
			"digit",
			"symbol",
		],
		"min_gram" : "2",
		"type" : "edge_ngram",
		"max_gram" : "20"
	},
},
"char_filter" : {
	"char_mapping" : {
		"type" : "mapping",
		"mappings" : [
			"Ё => Е",
			"ё => е"
		]
	},
},
"analyzer" : {
	"ngram" : {
		"filter" : [
			"lowercase",
			"ngram_filter"
		],
		"char_filter" : [
			"html_strip",
			"char_mapping"
		],
		"tokenizer" : "whitespace"
	},	
}

Теперь ищет как надо, но подсвечивает слова, а не то что ввели.
Хочется получить гибрид этих двух настроек.

Версия эластика 6.3.1, поиск осуществляется с помощью запроса

Запрос
{
  "query": {
	"bool": {
	  "must": [
		{
		  "match": {
			"title.ngram": {
			  "query": "Купить яб"
			}
		  }
		}
	  ]
	}
  },
  "highlight": {
	"fields": {
	  "*" : {}
	}
  }
}

Вы не могли бы прислать полный скрипт, который воспроизводит проблему (вместо отдельных фрагментов), чтобы я мог на своей машине его запустить и показать как должен выглядеть желаемый результат? Я из вашего описания не могу понять, что вы конкретно хотите.

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.