Поиск, как очередной виток в развитии или как это работает
![5321d29aeba2e.jpg](http://spark.ru/upload/other/5321d29aeba2e.jpg)
Предистория
Изначально для поиска по АвтоБарахолке были выбраны две противоположные схемы:
1. Показывать четко то, что запросил пользователь
Пользователь ищет "фару на Ланос", показываем только фары для Lanos и ничего более
2. Показывать все, что может подходить пользователю
Тоесть, по нашему запросу "фара на Ланос" мы покажем все фары и, дополнительно, все запчасти к Lanos
Поисковые системы хорошо оптимизирую свою выдачу, так почему же не использовать их опыт? Если не вдаваться в подробности оптимизации, то поисковики используют схему 2 с сортировкой по соответствию текста запросу
При этом пользователю сперва показываем именно то, что он ищет, а после то, что могло бы заинтересовать. Такая практика позволяет заинтересовать пользователя ровно также, как и блок похожих товаров
Задачи
1. Нам была нужна максимальная простота добавления болшого количества запчастей и мы не могли позволить ввести категории.
2. Фара, фары, фару - для покупателя один и тот же продукт, что делало невозможным использовать простой полнотекстовый поиск
3. Результаты поиска нужно сортировать, чтобы вверху было именно то, что искал пользователь
![wb_manifesto.png](http://itbusinessweek.com/wp-content/uploads/2013/02/wb_manifesto.png)
Решение в первом приближении
Покупатель вводит в поисковой строке примерно такое же описание, как и при добавлении запчасти. О, это нужно использовать: описание разбиваем на слова и, по специальному алгоритму, находим первоначальную форму каждого слова. Для каждой запчасти сохраняли набор этих слов.
Точто также мы поступаем и с поисковой строкой. А дальше - остается лишь найти те запчасти, в которых содержатся слова из запроса и отсортировать объявления по количеству совпадений слов
Добавили к этому дополнительную сортировку по дате обновления объявления и запустили
Реалии жизни и обновление поиска
После набора первоначальной базы и тестирования, стало понятно, что в выдаче слишком много "мусора" - тех, запчастей, что точно не заинтересуют покупателя. Как было указано в комментариях, покупателю, зачастую, не нужны запчасти от других марок автомобиля.
Все слова мы разбили на 5 категорий:
1. Регион
2. Марка
3. Модель
4. Название запчасти
5. Уточняющие слова
Теперь мы могли работать с комбинацией типов слов в запросе. Например, мы уже не показываем запчасти для других марок, если конкретная марка была указана в запросе (справедливости ради, к моделям такого фильтра не применяли потому что многие запчасти подходят от одной модели к другой и тут еще нужно поработать)
По прежнему, первыми показываются запчасти со всеми словами, которые искал пользователь, далее те, у которых совпало название, марка и модель, название и марка или только марка.
За наличие региона к каждой запчасти добавляем еще немного рейтинга, поднимая такие в списке выше остальных
Например, покупатель ищет "фары задние на Ланос в Киеве". Первыми будут показаны именно задние фары на Lanos из Киева, потом - из других регионов, далее фары для Ланос в Киеве и других городах и, в конце - другие запчасти для Ланос, которые могут заинтересовать пользователя.
Именно такую выдачу можно считать оптимальной
Что дальше?
Также, у нас имеются категории запчастей, которые определяются автоматически из названия и их нужно использовать по максимуму. Как? - добавив выдачу запчастей из одной категории после точного совпадения. В нашем примере после фар для Ланос будут показаны фонари, указатели поворотов, салонное освещение и др
С уважением, команда AutoBaraholka.com
0