Статья вводная, будет полезна новичкам, которые впервые хотят установить сфинкс, индексировать и искать контент, или тем, кто имеет небольшой опыт работы с sphinx.
Что такое sphinx?
Сфинкc — это бесплатный полнотекстовый поисковый движок, написанный на C++. С быстрой индексацией документов, стоп-словами, умеет интегрироваться с самыми известными БД: Mysql, MsSql, Oracle и тд, также имеет АПИ с популярными языками программирования PHP, Perl, Java и т.д. И! Имеет поддержку SQL синтаксиса.
Установка sphinx
sudo apt-get install sphinxsearch
Конфигурационный файл sphinx лежит по пути:
/etc/sphinxsearch/sphinx.conf
Запуск и остановка демона sphinx
sudo searchd #запуск демона, должен появится searchd.pid (у меня /var/run/sphinxsearch/searchd.pid) sudo searchd --stop #остановка sphinx демона
Чтобы настроить конфигурацию, мы будем править конфиг:
sudo vim /etc/sphinxsearch/sphinx.conf
Содержимое /etc/sphinxsearch/sphinx.conf:
source src1
{
type = mysql
sql_host = localhost
sql_user = test
sql_pass =
sql_db = test
sql_port = 3306 # optional, default is 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
sql_ranged_throttle = 0
sql_query_info = SELECT * FROM documents WHERE id=$id
}
#############################################################################
## index definition
#############################################################################
index test1
{
source = src1
path = /var/lib/sphinxsearch/data/test1
docinfo = extern
mlock = 0
morphology = none
min_word_len = 1
charset_type = sbcs
}
#############################################################################
## indexer settings
#############################################################################
indexer
{
mem_limit = 32M
}
#############################################################################
## searchd settings
#############################################################################
searchd
{
listen = 9312
log = /var/log/sphinxsearch/searchd.log
query_log = /var/log/sphinxsearch/query.log
read_timeout = 5
client_timeout = 300
max_children = 30
pid_file = /var/run/sphinxsearch/searchd.pid
max_matches = 1000
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
compat_sphinxql_magics = 0
}
Sphinx индексация
indexer --config /etc/sphinxsearch/sphinx.conf test1 indexer --config /etc/sphinxsearch/sphinx.conf --rotate --all
Производим поиск по sphinx
search -i test1 -q test
Результаты поиска на скрине:

Подключиться к sphinx из консоли
Подключиться к sphinx из консоли можно точно также, как и к mysql. Главное, указать порт и хост. Xост указывать обязательно, т.к. под юниксами без него не взлетит: libmysqlclient по умолчанию коннектится на UNIX-сокет, а не TCP-порт, поэтому просто -P недостаточно.
mysql -h 127.0.0.1 -P 9324
Порт тот же самый, который указан в вашем конфиге для sphinx (например, в моём конфиге sphinx.conf: строка listen = 9324:mysql41).
Заключение.
Работать со финкс достаточно просто. После добавления нового индекса делаем:
sudo indexer -c sphinx.conf wi_backend__sph_sites # производим индексацию
или sudo indexer --rotate -c sphinx.conf wi_backend__sph_sites
Затем запускаем поискового демона, если он еще не запущен. Если же уще запущен, то система любезно об этом сообщит:
sudo searchd -c sphinx.conf