Morozov&Pimnev blog

Полезные решения, шпаргалки и примеры по html, css, js, jQuery, MySQL, PHP, HostCMS, ssh.

Установка Sphinx 2.2.10 на Debian 7 Wheezy LAMP (64 bit) + HostCMS v6.2.4+

1. Sphinx требует несколько библиотек для установки на Debian. Используйте apt-get, чтобы загрузить и установить их (mysql-client, unixodbc, libpq5):

sudo apt-get install mysql-client unixodbc libpq5

2. Теперь мы можем установить Sphinx:

sudo wget http://sphinxsearch.com/files/sphinxsearch_2.2.10-release-1~wheezy_amd64.deb
sudo dpkg -i sphinxsearch_2.2.10-release-1~wheezy_amd64.deb

3. Редактируем файл /etc/default/sphinxsearch:

sudo mcedit /etc/default/sphinxsearch

пишем следующее:

START=yes

4. Создадим свой sphinx.conf:

sudo mcedit /etc/sphinxsearch/sphinx.conf

Со следующими параметрами:

index hostcms {
    type = rt
    path = /var/lib/sphinxsearch/data/hostcms
    wordforms = /etc/sphinxsearch/wordforms.txt
    rt_mem_limit = 64M
    morphology = lemmatize_ru, lemmatize_en
    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
}

searchd {
    listen = localhost:9312:mysql41

    log = /var/log/sphinxsearch/searchd.log
    query_log = /var/log/sphinxsearch/query.log

    read_timeout = 5
    client_timeout = 300
    max_children = 30
    persistent_connections_limit = 30
    pid_file = /var/run/sphinxsearch/searchd.pid
    seamless_rotate = 1
    preopen_indexes = 1
    unlink_old = 1
    mva_updates_pool = 1M
    max_packet_size = 8M
    max_filters = 256
    max_filter_values = 4096
    max_batch_queries = 32
    workers = threads # for RT to work
}

indexer {
    mem_limit = 128M
    lemmatizer_cache = 64M
}

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

4. Создаем и сохраняем файл для словоформ wordforms.txt пока пустым:

sudo mcedit /etc/sphinxsearch/wordforms.txt

5. Создаем папку для словарей:

sudo mkdir /etc/sphinxsearch/dic/

6. Скачиваем словари:

cd /etc/sphinxsearch/dic/
sudo wget http://sphinxsearch.com/files/dicts/ru.pak
sudo wget http://sphinxsearch.com/files/dicts/en.pak

7. Стартуем Sphinx первый раз:

sudo service sphinxsearch start

8. Проверьте корректность соединения с Sphinx:

mysql -h 127.0.0.1 -P 9312

9. Если все ок, можно настраивать драйвер в hostcms, в конфигурационный файл modules/search/config/config.php вносим следующие настройки:

<?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'
	)
);

В конфигурационный файл modules/core/config/database.php добавьте параметры нового соединения sphinx:

<?php
return array(
	'default' => array(
		... // здесь какие-то уже Ваши настройки соединения с базой данных
	),
	'sphinx' => array(
		'driver' => 'mysql',
		'host' => '127.0.0.1:9312',
		'database' => NULL
	)
);

10. Теперь можно переиндексировать сайт в админке "Поиск по сайту" -> "Переиндексировать".

sphinx, ssh, hostcms6, debian, search