Рубріки: Highload

Как индексировать большие объемы текста в Sphinx’e

admin

Sphinx — простой в использовании и развертывании, понятный и легкий инструмент для полнотекстового поиска в связке с базой данных MySQL.

Его главное преимущество — высокая скорость работы и сравнительная простота при масштабировании. Так что Sphinx подходит как для маленьких сайтов, так и для огромных площадок, как Craigslist, к примеру, на котором Sphinx обрабатывает более 50 млн. запросов ежедневно.

К тому же, система с легкостью справляется с индексацией больших объемов текста, так как поддерживает кластеризацию и шардинг.

Конфигурация источников данных

Предположим, что база данных разделена на 3 шарда, которые размещены на одном сервере. Для настройки Sphinx нужно сконфигурировать source и  index  для определения источника данных и параметров индексации.

Для начала нужно подключиться к базе данных:

source shop_product
{
    type   = mysql

    sql_host  = localhost
    sql_user  = sphinx
    sql_pass  = password
    sql_db  = shop
    sql_sock  = /var/run/mysqld/mysqld.sock
}

# Подключение к БД, задание пользователя, пароля и сокета MySQL

Затем необходимо подключить дочерние источники:

source shop_smartphone : shop_product
{
    sql_query_pre = SET NAMES utf8
    sql_query_pre = SET SESSION query_cache_type=OFF
    sql_query = SELECT id, title, description FROM smartphone
}

source shop_tablet : shop_product
{
    sql_query_pre = SET NAMES utf8
    sql_query_pre = SET SESSION query_cache_type=OFF
    sql_query = SELECT id, title, description FROM tablet
}

source shop_phone : shop_product
{
    sql_query_pre = SET NAMES utf8
    sql_query_pre = SET SESSION query_cache_type=OFF
    sql_query = SELECT id, title, description FROM phone
}

# Подключение дочерних таблиц БД

Настройка индексации

После подключения всех источников данных (которых может быть намного больше), нужно настроить индексирование для каждого из них:

index shop_smartphone_index
{
    source        = shop_smartphone
    path          = /var/data/shop_smartphone
    charset_type  = utf-8
}

index shop_tablet_index
{
    source        = shop_tablet
    path          = /var/data/shop_tablet
    charset_type  = utf-8
}

index shop_phone_index
{
    source        = shop_phone
    path          = /var/data/shop_phone
    charset_type  = utf-8
}

# Описание индексов и путей хранения

После того, как вы внесли все необходимые настройки в файл sphinx.conf, не забудьте запустить индексацию:
*/30 * * * * root [ -x /usr/bin/indexer ] && /usr/bin/indexer --quiet --rotate --all
# Запуск переиндексации каждые 30 минут

Самое главное

Sphinx — мощный инструмент для полнотекстового поиска, который при правильной настройке с легкостью справляется с большими объемами данных.

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023