Рубріки: 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 — мощный инструмент для полнотекстового поиска, который при правильной настройке с легкостью справляется с большими объемами данных.

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

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…

12.11.2024

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024