Оставить заявку
  1. Документация
  2. Smarty
  3. Интеграция дополнительных сервисов
  4. Умный поиск

Умный поиск

Умный поиск — дополнительный модуль Smarty smart_search на базе Manticore Search, который позволяет заменить обычный поиск фильмов по подстроке в названии на полнотекстовый поиск по разным полям фильма:

  • умный поиск прощает опечатки (что особенно полезно при голосовом вводе);
  • фильмы ищутся по жанрам, актёрам и другой мете;
  • поиск реже выдаёт пустые результаты — абоненту предлагается больше вариантов контента;
  • умный поиск шустрее обычного 🙂

Технические детали умного поиска

  • доступен, начиная с версии Smarty 2.12;
  • работает через отдельный индекс Manticore, а не через SQL-поиск по основной БД;
  • ищет сразу по названию, жанрам, актёрам и режиссёрам, году и странам;
  • сортирует выдачу по релевантности внутри Manticore: совпадение в названии важнее вторичных полей, совпадение в начале названия поднимается выше;
  • учитывает словоформы и префикс (поиск срабатывает уже от одного символа);
  • есть инструмент для дебага, почему фильм попал в выдачу: параметр search_detail возвращает подсветку совпадений и вес релевантности;
  • не использует опции встроенного поиска TVMW_USE_UNACCENT_SEARCH и TVMW_VIDEO_LIST_SEARCH_BY_RELEVANCE — они на умный поиск не влияют;
  • подключается отдельной опцией лицензии Smarty и требует установленный Manticore плюс регулярную синхронизацию индекса.

Как настроить

1 Обновление ключа лицензии Smarty

Пример фрагмента лицензии:

SMARTY_LICENSE_PARAMS = {
...
'smart_search',
...
}

2 Установка Manticore

Manticore можно поставить на тот же сервер, что и Smarty, или на отдельный хост. По умолчанию Smarty подключается к localhost:9306 (MySQL-протокол Manticore).

Debian / Ubuntu:

wget https://repo.manticoresearch.com/manticore-repo.noarch.deb
sudo dpkg -i manticore-repo.noarch.deb
sudo apt update
sudo apt install manticore
sudo systemctl enable manticore
sudo systemctl start manticore

Другие ОС — в документации Manticore. Если после установки не меняли /etc/manticoresearch/manticore.conf, дефолтные MANTICORE_HOST и MANTICORE_PORT в Smarty подойдут.

Проверка, что сервис слушает порт:

mysql -h0 -P9306

3 Настройки Smarty

Опции задаются в файле конфигурации Smarty /etc/microimpuls/smarty/smarty.py (или в кастомном файле конфигурации). После изменения перезагрузите uwsgi: sudo service uwsgi restart.

Модуль нужно включить в INSTALLED_APPS:

INSTALLED_APPS += (
    'smart_search',
)

Подключение к Manticore:

  • MANTICORE_HOST — адрес хоста Manticore Search. Тип данных: string. По умолчанию localhost.
  • MANTICORE_PORT — порт подключения к Manticore Search. Тип данных: int. По умолчанию 9306.

Пример настройки:

MANTICORE_HOST = 'localhost'
MANTICORE_PORT = 9306

Для соединения с Manticore на сервере Smarty нужна библиотека pymysql. Если при запуске команд появляется No module named 'pymysql':

smarty_manage pip install pymysql==1.0.2 --settings=settings.<settings name>

Команды синхронизации индекса

Индекс в Manticore не обновляется сам при изменении видеотеки. Сначала актуализируется схема таблиц, затем данные каталога.

Синхронизация схемы

Команда:

smarty_manage manticore_sync_database --settings=settings.<settings name>

Создаёт в Manticore таблицы модуля smart_search и при необходимости обновляет их структуру. Для видео создаётся таблица tvmiddleware_video:

  • id — идентификатор строки в Manticore;
  • name — название;
  • actors_set — актёры и режиссёры через запятую;
  • genres — жанры через запятую;
  • year — год выхода;
  • countries — страны;
  • client_id — идентификатор Client в Smarty;
  • smarty_id — идентификатор видео в Smarty.

Команду достаточно запускать после обновления Smarty, если изменилась схема индекса.

Синхронизация каталога видео

Команда:

smarty_manage manticore_sync_content --settings=settings.<settings name>

Записывает в Manticore данные о фильмах в Smarty и обновляет уже проиндексированные записи. Запускайте регулярно — с той частотой, с какой в видеотеке меняются фильмы. Без актуальной схемы команда не сработает.

Обязательные параметры:

--client_id – идентификатор Client, каталог которого синхронизируется.

Необязательные параметры:

--create_chunk_size – максимум строк, добавляемых в Manticore за один запрос. По умолчанию 50.

--delete_chunk_size – максимум строк, удаляемых из Manticore за один запрос. По умолчанию 50.

--force_full_sync – полная переиндексация: таблицы очищаются, каталог импортируется целиком. Нужен после смены схемы индекса или если выдача сильно расходится с видеотекой.

Пример первой загрузки и последующих обновлений:

smarty_manage manticore_sync_database --settings=settings.<settings name>
smarty_manage manticore_sync_content --client_id=1 --settings=settings.<settings name>

После обновления Smarty, которое меняет структуру индекса:

smarty_manage manticore_sync_database --settings=settings.<settings name>
smarty_manage manticore_sync_content --client_id=1 --force_full_sync --settings=settings.<settings name>

Клиентские приложения

Умный поиск уже интегрирован в ТВ-интерфейсе Titanium и мобильном приложении, включается опцией use_smart_video_search.

Готовы запустить свой видеосервис?

Запросите персональную демонстрацию и узнайте, как Майкроимпульс поможет вашему бизнесу

Для отправки формы нужны функциональные cookie — без них не загрузится защита SmartCaptcha.