# Highlight слова в nested поле используя словоформы

**URL:** https://discuss.elastic.co/t/highlight-nested/85675
**Category:** Вопросы на русском языке
**Created:** [May 14, 2017, 9:50am UTC](https://discuss.elastic.co/t/highlight-nested/85675 "2017-05-14T09:50:33Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![symbios-zi](https://avatars.discourse-cdn.com/v4/letter/s/f475e1/32.png) [@symbios-zi](https://discuss.elastic.co/u/symbios-zi)
#### Post date: [May 14, 2017, 9:50am UTC](https://discuss.elastic.co/t/highlight-nested/85675/1 "2017-05-14T09:50:34Z")

</div>

Здравствуйте. У меня есть индекс товаров (products) где используется поле описание (descriptions) в виде массива объектов, так как один товар имеет несколько описаний для разных сайтов.

Есть задача поиска по описаниям, и подсветка найденных фраз.

Я установил плагин [GitHub - imotov/elasticsearch-analysis-morphology: Morphological Analysis Plugin for ElasticSearch (No longer maintained)](https://github.com/imotov/elasticsearch-analysis-morphology) и внес при создании индекса соотвествующие настройки. Когда я делаю поиск по nested полю, поиск находит только точные совпадения.

```
GET products/_search
{
  "query": { 
    "bool": { 
      "should": [
        {
          "nested": {
            "path": "descriptions", 
            "query": {
              "bool": {
                "should": [ 
                  {
                    "match": {
                      "descriptions.description": "плесенью"
                    }
                  }
                ],
                "filter": [ 
                  { "term": { "descriptions.domain_id": 3 }}
                ]
              }
            },
            "inner_hits": { 
              "highlight": {
                "fields": {
                  "descriptions.description": {}
                }
              }
            }
          }
        }
      ],
      "minimum_should_match" : 1
    }
  }
}

```

выдаст подобные результаты:

> хорошо справляются с вредителями и _плесенью_, но всё...

но проигнорирует все варианты с подобными фразами

> Интересное действие; Особая устойчивость к плесени

Есть ли возможно подсвечивать такие слова с другим окончанием?

---

<div class="post-metadata">

### Author: ![symbios-zi](https://avatars.discourse-cdn.com/v4/letter/s/f475e1/32.png) [@symbios-zi](https://discuss.elastic.co/u/symbios-zi)
#### Post date: [May 14, 2017, 12:00pm UTC](https://discuss.elastic.co/t/highlight-nested/85675/2 "2017-05-14T12:00:55Z")

</div>

Проанализировав работу поиска, понял что вообще не реагирует на любые неточные совпадения.

Создал для тестов еще 1 индекс articles и задал настройки из документации [https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-lang-analyzer.html#russian-analyzer](https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-lang-analyzer.html#russian-analyzer)

после добавления в индекс статей, он ищет только точные совпадения.

```
GET /articles/_search
{
    "query": {
        "match" : {
            "title" : "форум"
        }
    }
}

```

Вернет только точные совпадения слова **форум**.

другой запрос:

```
GET /articles/_search
{
    "query": {
        "match" : {
            "title" : "форумы"
        }
    }
}

```

вернет совершенно другие запросы.

Настройки индекса:

```
{
  "articles": {
    "settings": {
      "index": {
        "number_of_shards": "5",
        "provided_name": "articles",
        "creation_date": "1494760778489",
        "analysis": {
          "filter": {
            "russian_stemmer": {
              "type": "stemmer",
              "language": "russian"
            },
            "russian_stop": {
              "type": "stop",
              "stopwords": "_russian_"
            },
            "russian_keywords": {
              "keywords": [
                "пример"
              ],
              "type": "keyword_marker"
            }
          },
          "analyzer": {
            "russian": {
              "filter": [
                "lowercase",
                "russian_stop",
                "russian_keywords",
                "russian_stemmer"
              ],
              "tokenizer": "standard"
            }
          }
        },
        "number_of_replicas": "1",
        "uuid": "e1SEV5koQT-EPBO8bsr6Rg",
        "version": {
          "created": "5030099"
        }
      }
    }
  }
}

```

не могли бы вы подсказать где моя ошибка?

еще немного информации:

`GET articles/_analyze?pretty&analyzer=russian&text=форумы"`

выдает

```
{
  "tokens": [
    {
      "token": "форум",
      "start_offset": 0,
      "end_offset": 6,
      "type": "<ALPHANUM>",
      "position": 0
    }
  ]
}

```

если тут выглядит правильно то я не понимаю почему не находится статья со словом " **форумы**"

---

<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: [May 14, 2017, 12:24pm UTC](https://discuss.elastic.co/t/highlight-nested/85675/3 "2017-05-14T12:24:46Z")

</div>

Я не вижу mapping, но судя по всему, Вы создали анализатор, но не указали для каких полей этот анализатор должен использоваться - в результате он не используется нигде.

---

<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: [June 11, 2017, 12:39pm UTC](https://discuss.elastic.co/t/highlight-nested/85675/4 "2017-06-11T12:39:08Z")

</div>

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