# Индекс и поиск для товаров с аксессуарами

**URL:** <https://discuss.elastic.co/t/topic/61846>\
**Category:** Вопросы на русском языке\
**Created:** [September 29, 2016, 6:58pm UTC](https://discuss.elastic.co/t/topic/61846 "2016-09-29T18:58:56Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Ilya\_Shipilov](https://avatars.discourse-cdn.com/v4/letter/i/e9a140/32.png) [@Ilya\_Shipilov](https://discuss.elastic.co/u/Ilya_Shipilov)\
**Post date:** [September 29, 2016, 6:58pm UTC](https://discuss.elastic.co/t/topic/61846/1 "2016-09-29T18:58:56Z")

</div>

Здравствуйте!

Задача такова: есть прайс с огромным количеством товаров и к в нем же аксессуары для этих товаров. Составлен индекс по наименованиям, но поскольку наименование непосредственно товара состоит из примерно такого же количества слов, что и товаров с аксессуарами для него поиск выдает плохой результат:

Пример:  
товары в прайсе:

- Смартфон Apple iPhone SE 16Gb Space Gray MLLN2RU/A, серый
- чехол крышка ZAKKA для iPhone 4/4S, голубой
- планшетный компьютер iPhone 16Gb Gold, MKU32RU/A

При поиске "iphone" получаем чехлы и крышки в первых результатах, а хотелось бы собственно iphone.

Пробовал прикручивать модуль русской морфологии, результат не улучшился.

Подскажите, пожалуйста, как можно решить задачу, сейчас думаю в сторону синонимов, но не уверен что они помогут.

---

<div class="post-metadata">

**Author:** ![Yan\_Work](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/yan_work/32/620_2.png) [@Yan\_Work](https://discuss.elastic.co/u/Yan_Work)\
**Post date:** [October 1, 2016, 3:14am UTC](https://discuss.elastic.co/t/topic/61846/2 "2016-10-01T03:14:14Z")

</div>

Навскидку приходит много вариантов, вы можете

1. использовать [https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html#function-field-value-factor](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html#function-field-value-factor) для установки поля в документ, которое будет влиять на скоринг
2. использовать на стороне приложение разные поля для названия у товара и у аксессуара - название\_товара и название\_аксессуара, у которых установить разный модификатор веса (boost)
3. разнести эти типы записей и искать их отдельно (даже если и одним запросом, и больше вес давать тем что нашлись первым способом)

предлагаю начать с того, чем еще отличаются ваши товары? откуда вы знаете что сначала надо показать смартфон? вот оттуда же узнает и система. (на этапе индексирования)

например, вы предполагаете что пользователь ищет смартфон + iphone, а не iphone. Тогда можете сразу такой запрос и составлять (только OR а не AND).

либо просто одни товары лучше и популярнее чем другие и их надо поднимать всегда? от чего это зависит? ищет ли человек в категории или глобально? как система должна понять что ему нужно? (на этапе поиска и индексирования) вот так и программируйте 🙂

---

<div class="post-metadata">

**Author:** ![Ilya\_Shipilov](https://avatars.discourse-cdn.com/v4/letter/i/e9a140/32.png) [@Ilya\_Shipilov](https://discuss.elastic.co/u/Ilya_Shipilov)\
**Post date:** [October 6, 2016, 11:16pm UTC](https://discuss.elastic.co/t/topic/61846/3 "2016-10-06T23:16:08Z")

</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:** [July 6, 2017, 1:45pm UTC](https://discuss.elastic.co/t/topic/61846/4 "2017-07-06T13:45:00Z")

</div>


