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

**URL:** https://discuss.elastic.co/t/topic/141011
**Category:** Вопросы на русском языке
**Created:** [July 21, 2018, 7:02pm UTC](https://discuss.elastic.co/t/topic/141011 "2018-07-21T19:02:18Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![bio](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/bio/32/76409_2.png) [@bio](https://discuss.elastic.co/u/bio)
#### Post date: [July 21, 2018, 7:02pm UTC](https://discuss.elastic.co/t/topic/141011/1 "2018-07-21T19:02:18Z")

</div>

Всем привет!

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

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

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

> **Настройки анализатора**
>
> ```
> "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": {
> "*" : {}
> }
> }
> }
> 
> ```

---

<div class="post-metadata">

### Author: ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)
#### Post date: [July 23, 2018, 3:10pm UTC](https://discuss.elastic.co/t/topic/141011/2 "2018-07-23T15:10:54Z")

</div>

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

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)
#### Post date: [August 20, 2018, 3:10pm UTC](https://discuss.elastic.co/t/topic/141011/3 "2018-08-20T15:10:55Z")

</div>

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