Евгений Ильин. drupal + solr: Яндекс.Маркет своими руками
DESCRIPTION
DrupalCafe#9@Novosibirsk https://vk.com/drupalcafe9 Drupal + Solr или как сделать Яндекс маркет своими руками Требования к интернет каталогам товаров и инструменты Drupal для создания современных каталогов. Как сделать каталог, который будет продавать ----- Сайт сибирского сообщества друпаллеров ДрупалСиб drupalsib.ru Группа сибирского сообщества друпаллеров Вконтакте vk.com/drupalsib Партнер Группа компаний И20 i20.bizTRANSCRIPT
Drupal + Solr: Яндекс Маркет своими руками
Немного обо мне
● 5 лет разработки на Drupal● Я реализовал поиск на более чем 15
Drupal проектах● Я написал цикл статей на тему
интеграции Solr и Drupal● Я разрабатываю собственные
модули для поиска и делаю патчи для существующих модулей
Почему я выбрал эту тему
Функционально и универсально
Что было сделано● Полнотекстовый поиск на русском языке с
поддержкой стемминга● Мощный каталог с множеством опций● ЧПУ для страниц поиска● Новые виджеты для фасетных фильтров● AJAX’овые фасеты
Модули которые я использовал
Must have:● Search API ● Search API Solr Search● Facet API
Модули которые я использовал
Useful:● Search API Views● Facet API Pretty Paths● Search API Autocomplete● AJAX Facets● Search API Sorts
С какими сложностями я столкнулся
● Качество поисковой выдачи● Постоянно меняющийся набор атрибутов у товаров● Большие затраты ресурсов на индексацию● Кастомизация фасетных фильтров● Работа с сортировками
Качество поисковой выдачи
Relevancy Completeness of the search results+
Weight of fields
Boost
Elevation Stemming Additional fields with tags
Качество поисковой выдачи
Что такое стемминг и для чего он нужен?
Stemmer
Качество поисковой выдачи
Как настроить стемминг для Apache Solr:● Включить стеммер в schema.xml● Сконвертировать файлы словаря в utf-8 и положить
их в папку с конфигами● Переиндексировать контент
Качество поисковой выдачи
Как устроены словари для стемминга
● Словарь состоит из двух файлов● Файл .aff содержит список правил словообразования● Файл .dic содержит список слов, с указанием правил
Качество поисковой выдачи
Добавим вомбатаru_RU.aff ru_RU.dic
SFX K 0 а [^ейоь]
SFX K 0 у [^ейоь]
SFX K 0 ом [^ежйоцчшщь]
SFX K 0 е [^ейоь]
SFX K 0 ы [^гежйкохчшщь]
SFX K 0 и [гжкхчшщ]
SFX K 0 ей [жчшщ]
SFX K 0 ов [^ежйоцчшщь]
SFX K 0 ам [^ейоь]
SFX K 0 ами [^ейоь]
SFX K 0 ах [^ейоь]
яшмовый/Aящер/Kящеренок/Fящерица/Iящеричный/Aящерка/Iящерный/Aящик/Kящичек/Oящичный/Aящур/Jящурный/Aвомбат/K
Атрибуты индексируемых сущностей
Как обычно бывает
Сущность
Поля
Поля в индексе
Фасеты
Profit!
Атрибуты индексируемых сущностей
Как было в тот раз
Все та же сущность
Набор полей постоянно меняется
Кто будет добавлять поля
в индекс?!
Каждый раз настраивать
фасеты?!
Profit
Атрибуты индексируемых сущностей
Что мы сделали● Модуль relations для связи атрибутов с товарами● Динамическая генерация полей для поиска● Динамическая настройка и отображение фасетных
фильтров
ЧПУ для страниц поиска
Что такое ЧПУ и для чего они нужны
www.example.com/?q=node/1www.example.com/node/1
www.example.com/articles/first-article
ЧПУ для страниц поиска
Url результатов поиска с фасетными фильтрами
www.example.com?f[0]=field_name:value
www.example.com?f[0]=field_brand:bosch
ЧПУ для страниц поиска
Модуль Facet API Pretty Paths
www.example.com/field_name/value
www.example.com/brand/bosch
Фасетные фильтрыDrupal MarketYandex Market
Фасетные фильтры
AJAX’овые фасеты - как они работают
ФильтрацияAJAX
запрос на сервер
Поиск по новым
параметрам
Обновление фильтров на
странице
Обновление результатов
поиска
Фасетные фильтрыДинамически настраиваемая структура каталога
Фасетные фильтры
Несколько необычных задач связанных с фасетами
● Программная отрисовка фасетов● Включение фасета по умолчанию● Отрисовка одного и того же фасета дважды на
странице
Сортировка результатов поиска
Простые сортировки
Сортировка результатов поискаСортировки и boost query
В наличии
Под заказ
Отсутствует
Сортировка по релевантности
x1000
x100
Сортировка результатов поиска
Сортировки и Elevation
Usual results
Elevated
В заключение
Используйте готовые решения и компоненты
Drupal + Solr:
Яндекс Маркет своими руками
Задавайте вопросы Евгений Ильин [email protected] SkypeID: ilyin.e