Евгений Ильин. drupal + solr: Яндекс.Маркет своими руками

27
Drupal + Solr: Яндекс Маркет своими руками

Upload: drupalsib

Post on 02-Jul-2015

282 views

Category:

Technology


5 download

DESCRIPTION

DrupalCafe#9@Novosibirsk https://vk.com/drupalcafe9 Drupal + Solr или как сделать Яндекс маркет своими руками Требования к интернет каталогам товаров и инструменты Drupal для создания современных каталогов. Как сделать каталог, который будет продавать ----- Сайт сибирского сообщества друпаллеров ДрупалСиб drupalsib.ru Группа сибирского сообщества друпаллеров Вконтакте vk.com/drupalsib Партнер Группа компаний И20 i20.biz

TRANSCRIPT

Page 1: Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками

Drupal + Solr: Яндекс Маркет своими руками

Page 2: Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками

Немного обо мне

● 5 лет разработки на Drupal● Я реализовал поиск на более чем 15

Drupal проектах● Я написал цикл статей на тему

интеграции Solr и Drupal● Я разрабатываю собственные

модули для поиска и делаю патчи для существующих модулей

Page 3: Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками

Почему я выбрал эту тему

Функционально и универсально

Page 4: Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками

Что было сделано● Полнотекстовый поиск на русском языке с

поддержкой стемминга● Мощный каталог с множеством опций● ЧПУ для страниц поиска● Новые виджеты для фасетных фильтров● AJAX’овые фасеты

Page 5: Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками

Модули которые я использовал

Must have:● Search API ● Search API Solr Search● Facet API

Page 6: Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками

Модули которые я использовал

Useful:● Search API Views● Facet API Pretty Paths● Search API Autocomplete● AJAX Facets● Search API Sorts

Page 7: Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками

С какими сложностями я столкнулся

● Качество поисковой выдачи● Постоянно меняющийся набор атрибутов у товаров● Большие затраты ресурсов на индексацию● Кастомизация фасетных фильтров● Работа с сортировками

Page 8: Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками

Качество поисковой выдачи

Relevancy Completeness of the search results+

Weight of fields

Boost

Elevation Stemming Additional fields with tags

Page 9: Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками

Качество поисковой выдачи

Что такое стемминг и для чего он нужен?

Stemmer

Page 10: Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками

Качество поисковой выдачи

Как настроить стемминг для Apache Solr:● Включить стеммер в schema.xml● Сконвертировать файлы словаря в utf-8 и положить

их в папку с конфигами● Переиндексировать контент

Page 11: Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками

Качество поисковой выдачи

Как устроены словари для стемминга

● Словарь состоит из двух файлов● Файл .aff содержит список правил словообразования● Файл .dic содержит список слов, с указанием правил

Page 12: Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками

Качество поисковой выдачи

Добавим вомбата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

Page 13: Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками

Атрибуты индексируемых сущностей

Как обычно бывает

Сущность

Поля

Поля в индексе

Фасеты

Profit!

Page 14: Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками

Атрибуты индексируемых сущностей

Как было в тот раз

Все та же сущность

Набор полей постоянно меняется

Кто будет добавлять поля

в индекс?!

Каждый раз настраивать

фасеты?!

Profit

Page 15: Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками

Атрибуты индексируемых сущностей

Что мы сделали● Модуль relations для связи атрибутов с товарами● Динамическая генерация полей для поиска● Динамическая настройка и отображение фасетных

фильтров

Page 16: Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками

ЧПУ для страниц поиска

Что такое ЧПУ и для чего они нужны

www.example.com/?q=node/1www.example.com/node/1

www.example.com/articles/first-article

Page 17: Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками

ЧПУ для страниц поиска

Url результатов поиска с фасетными фильтрами

www.example.com?f[0]=field_name:value

www.example.com?f[0]=field_brand:bosch

Page 18: Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками

ЧПУ для страниц поиска

Модуль Facet API Pretty Paths

www.example.com/field_name/value

www.example.com/brand/bosch

Page 19: Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками

Фасетные фильтрыDrupal MarketYandex Market

Page 20: Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками

Фасетные фильтры

AJAX’овые фасеты - как они работают

ФильтрацияAJAX

запрос на сервер

Поиск по новым

параметрам

Обновление фильтров на

странице

Обновление результатов

поиска

Page 21: Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками

Фасетные фильтрыДинамически настраиваемая структура каталога

Page 22: Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками

Фасетные фильтры

Несколько необычных задач связанных с фасетами

● Программная отрисовка фасетов● Включение фасета по умолчанию● Отрисовка одного и того же фасета дважды на

странице

Page 23: Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками

Сортировка результатов поиска

Простые сортировки

Page 24: Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками

Сортировка результатов поискаСортировки и boost query

В наличии

Под заказ

Отсутствует

Сортировка по релевантности

x1000

x100

Page 25: Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками

Сортировка результатов поиска

Сортировки и Elevation

Usual results

Elevated

Page 26: Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками

В заключение

Используйте готовые решения и компоненты

Page 27: Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками

Drupal + Solr:

Яндекс Маркет своими руками

Задавайте вопросы Евгений Ильин [email protected] SkypeID: ilyin.e