Введите имя домена:
.ua .com.ua .in.ua .org.ua
.ru .com .net .org
Показать все домены

Установка и настройка Sphinx

Ответы на вопросы от компании «Украинский хостинг».

Установка и настройка Sphinx в Ubuntu

Sphinx является производительной и простой системой с открытым исходным кодом, предназначенной для полнотекстового поиска. При помощи Sphinx возможно производить поиск данных в любых источниках: в текстовых и HTML файлах, почтовых ящиках, базах SQL и т.д.

Перед выполнением инструкции, необходимо предварительно установить и настроить сервер MySQL.

Так же рекомендуется создать не root пользователя с доступом к sudo (но сначала нужно подключиться к серверу по SSH).

В инструкции используется текстовый редактор nano, для установки которого требуется выполнить команду:

yum install nano

Процедура установки Sphinx в Ubuntu состоит из следующих шагов:

  1. Перед установкой Sphinx, устанавливаем зависимости:

    sudo yum install -y postgresql-libs unixODBC

    Нажимаем Enter. Если запрашивает пароль, ввести его.

  2. Переходим в каталог tmp:

    cd /tmp
  3. Загружаем Sphinx:

    wget http://sphinxsearch.com/files/sphinx-2.2.11-1.rhel7.x86_64.rpm

    Нажимаем Enter

  4. Устанавливаем Sphinx:

    sudo yum install -y sphinx-2.2.11-1.rhel7.x86_64.rpm

    Нажимаем Enter

  5. Входим в оболочку MySQL:

    mysql -u root -p

    Нажимаем Enter. Если запрашивает пароль, ввести пароль, который создавался при создании сервера My SQL в руководстве по установке LAMP

  6. Создаем тестовую базу данных(в инструкции название базы данных test):

    CREATE DATABASE test;

    Нажимаем Enter

  7. Импортируйте образца файла SQL, поставляемый вместе с пакетом:

    SOURCE /usr/share/doc/sphinx-2.2.11/example.sql;

    Нажимаем Enter

  8. Закрываем оболочку MySQL:

    quit

    Нажимаем Enter

  9. Конфигурации Sphinx хранятся в файле sphinx.conf.

    Изменяем название конфигурационного файла на sphinx.conf2

    sudo mv /etc/sphinx/sphinx.conf /etc/sphinx/sphinx.conf2

    Нажимаем Enter

    Создаем новый файл sphinx.conf:

    sudo nano /etc/sphinx/sphinx.conf

    Нажимаем Enter

    И вставляем в него следующие строки (пароль J2m!G2x2&T6e%1T2y необходимо заменить на собственный пароль root для подключения к MySQL):

    source src1
    {
    type          = mysql
    sql_host      = localhost
    sql_user      = root
    sql_pass      = J2m!G2x2&T6e%1T2y
    sql_db        = test
    sql_port      = 3306
    sql_query     = \
    SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content \
    FROM documents
    sql_attr_uint         = group_id
    sql_attr_timestamp    = date_added
    }
    index test1
    {
    source            = src1
    path              = /var/lib/sphinx/test1
    docinfo           = extern
    }
    searchd
    {
    listen            = 9306:mysql41
    log               = /var/log/sphinx/searchd.log
    query_log         = /var/log/sphinx/query.log
    read_timeout      = 5
    max_children      = 30
    pid_file          = /var/run/sphinx/searchd.pid
    seamless_rotate   = 1
    preopen_indexes   = 1
    unlink_old        = 1
    binlog_path       = /var/lib/sphinx/
    }

    Сохраняем изменение в файле, нажав сочетание клавиш Ctrl+x , затем клавишу y и затем клавишу Enter.

  10. Добавляем данные в индекс, используется ранее созданный конфигурационный файл sphinx.conf

    sudo indexer --all

    Нажимаем Enter

  11. Для того, чтобы постоянно поддерживать индекс в актуальном состоянии, создаем cron задание:

    crontab -e

    Нажимаем Enter

    Добавляем следующий код:

    @hourly /usr/bin/indexer --rotate --config /etc/sphinx/sphinx.conf --all

    Данное cron задание будет запускаться каждый час и добавлять данные в индекс, обращаясь к созданному ранее конфигурационному файлу.

    Сохраняем информацию нажав сочетание клавиш Ctrl + C, нажать одновременно клавиши Shift и « : » затем указав команду:

    :wq 

    к двоеточию дописать буквы wq

    Нажимаем Enter

  12. Запускаем демон Sphinx:

    sudo systemctl start searchd

    Нажимаем Enter.Если запрашивает пароль ввести его

    Убеждаемся, что демон Sphinx запущен:

    sql

    Нажимаем Enter

  13. Для поиска данных с помощью Sphinx, подключаемся к SphinxQL с помощью интерфейса MySQL:

    mysql -h0 -P9306

    Нажимаем Enter

  14. Пробуем найти предложение test document:

    SELECT * FROM test1 WHERE MATCH('test document'); SHOW META;

    Нажимаем Enter

    Видим два совпадения из индекса test1:

  15. Выполняем поиск по ключевым словам:

    CALL KEYWORDS ('test one three', 'test1', 1);

    Нажимаем Enter

    В индексе test1 было найдено:

    5 совпадений в 3 документах для ключа test.
    2 совпадения в 1 документе для ключа one.
    0 совпадений в 0 документах для ключа three.
  16. Выходим из SphinxQL:

    quit

    Нажимаем Enter

  17. Входим в оболочку MySQL:

    mysql -u root -p

    Нажимаем Enter. Если запрашивает пароль, ввести пароль при создании mysql из руководства по созданию LAMP.

  18. Удаляем тестовую базу:

    DROP DATABASE test;

    Нажимаем Enter

  19. Выходим из оболочки MySQL:

    quit

    Нажимаем Enter

См.также: