Выдано 109507 лицензий

Sphinx

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

Установка Sphinx

Sphinx доступен на большинстве платформ, исчерпывающая информация доступна на сайте производителя - установка на Debian и Ubuntu, установка на CentOS и RedHat, установка на Windows.

Для использования мы рекомендуем версию 2.2.10 и старше.

Конфигурирование Sphinx

В конфигурационный файл sphinx.conf внесите новый индекс, в данном примере он называется hostcms:

index hostcms {
    type = rt
    path = /var/lib/sphinx/hostcms
    rt_mem_limit = 64M
    morphology = stem_enru, soundex
    rt_field = title
    rt_field = text
    rt_attr_string = title
    rt_attr_timestamp = datetime
    rt_attr_string = url
    rt_attr_uint = size
    rt_attr_uint = inner
    rt_attr_multi = siteuser_group_id
    rt_attr_uint = module
    rt_attr_uint = module_id
    rt_attr_uint = module_value_type
    rt_attr_uint = module_value_id
    rt_attr_uint = site_id
}

Путь размещения индекса path может варьироваться в зависимости от используемой ОС.

В секции searchd настройте опцию listen

searchd
{
    listen = localhost:9312:mysql41
    ...
}

Далее перезагрузите sphinxd и проверьте наличие соединения:
/etc/init.d/searchd restart

Проверьте корректность соединения с Sphinx:
mysql -h 127.0.0.1 -P 9312

В конфигурационном файле модуля поиска в секции default укажите использования драйвера sphinx и задайте параметры:

<?php

return array (
    'default' => array(
        'driver' => 'sphinx',
        'database' => 'sphinx',
        'index' => 'hostcms'
    ),
    'modules' => array(
        0 => 'Structure',
        1 => 'Informationsystem',
        2 => 'Forum',
        3 => 'Shop',
        4 => 'Helpdesk',
        5 => 'Siteuser'
    )
);

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

<?php

return array(
    'default' => array(
       ...
    ),
    'sphinx' => array(
        'driver' => 'mysql',
        'host' => '127.0.0.1:9312',
        'database' => NULL
    )
);

Удаление индекса при внесении изменений в sphinx.conf

В случае изменения конфигурационного файла sphinx.conf мы рекомендуем остановить searchd, удалить файлы индекса (в данном примере файлы hostcms* в /var/lib/sphinx) и запустить searchd.

Использование морфологических словарей

Морфологические словари позволяют улучшить качество поиска, т.к. вместо нахождения основы слова используется нормальная словарная форма.

СловоСтеммерСловарь
Диплом Дипл Диплом
Диплома Диплом Диплом
Груша Груш Груша

Создайте директорию /etc/sphinx/dic/ и загрузите в нее требуемые словари.

В конфигурационный файл sphinx.conf внесите следующие изменения:

index hostcms {
    ...
    #morphology = stem_enru, soundex
    morphology = lemmatize_ru_all, lemmatize_en_all
    ...
}

indexer
{
    ...
    lemmatizer_cache = 64M
}

common
{
    lemmatizer_base = /etc/sphinx/dic/
}

Перезагрузите sphinxd и проверьте работу:
/etc/init.d/searchd restart