Установка Sphinx
Понадобилось быстренько поднять
В наличии тестовый сервер с opensuse 11.4 x86_64.
Установка
Скачиваем пакет
http://download.opensuse.org/repositories/server:/search/openSUSE_12.3/src/sphinx-2.0.8-1.1.src.rpm |
Собираем rpm
rpmbuild –rebuild sphinx-2.0.8-
1.1
.src.rpm
|
Устанавливаем пакет
cd / usr / src / packages / RPMS / x86_64 / rpm -ihv sphinx-2.0.8- 1.1 .x86_64.rpm |
Рихтуем конфиг сфинкса /etc/sphinx/sphinx.conf
# # Minimal Sphinx configuration sample (clean, simple, functional) # source blog-src { type = mysql sql_host = example.com sql_user = user sql_pass = passwd sql_db = database sql_query_pre = SET NAMES utf8 sql_query_pre = SET CHARACTER SET utf8 sql_query_pre = SET SESSION query_cache_type=OFF # Запрос выборки данных для индексации sql_query = SELECT ID as post_id, post_title, post_content FROM wp_posts WHERE post_type = 'post' sql_query_info = SELECT * FROM post WHERE post_id=$id # Запрос доп. информации для вывода результата (используется утилитой "search") sql_query_info = SELECT * FROM wp_posts WHERE ID = $id } index blog-index { source = blog-src path = /var/sphinx/data/blog docinfo = extern mlock = 0 morphology = stem_enru min_word_len = 2 enable_star = 1 index_exact_words = 1 #min_prefix_len = 1 min_infix_len = 1 html_strip = 1 expand_keywords = 1 charset_type = utf-8 charset_table = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F } indexer { mem_limit = 32M } searchd { listen = 9312 listen = 9306:mysql41 read_timeout = 5 max_children = 30 max_matches = 1000 seamless_rotate = 1 preopen_indexes = 1 unlink_old = 1 workers = threads # for RT to work pid_file = /var/sphinx/log/searchd.pid log = /var/sphinx/log/searchd.log query_log = /var/sphinx/log/query.log binlog_path = /var/sphinx/data # WARNING: compat_sphinxql_magics=1 is deprecated compat_sphinxql_magics = 0 } |
Создаем скрипт запуска
cat /etc/init.d/sphinx
#!/bin/bash #---------- Variables ---------- _SOFT_NAME =Sphinx _PROC_NANE =searchd case $1 in status ) ps aux | grep $_PROC_NANE | grep -v grep > / dev / null if [ $? -eq 0 ] then echo " $_SOFT_NAME running..." else echo " $_SOFT_NAME not running..." fi ;; stop ) echo "Shutting down $_SOFT_NAME ..." / usr / bin / searchd --stop ;; start ) echo "Starting up $_SOFT_NAME ..." / usr / bin / searchd ;; restart ) echo "Shutting down $_SOFT_NAME ..." / usr / bin / searchd --stop echo "Starting up $_SOFT_NAME ..." / usr / bin / searchd ;; * ) echo "Usage: ./sphinx {start|stop|status|restart}" ;; esac |
Создаем необходимые каталоги
mkdir -p / var / sphinx / data && mkdir / var / sphinx / log |
Запускаем индексирование
server: / etc / sphinx # /usr/bin/indexer --all Sphinx 2.0.8-id64-release ( r3831 ) Copyright ( c ) 2001 - 2012 , Andrew Aksyonoff Copyright ( c ) 2008 - 2012 , Sphinx Technologies Inc ( http: // sphinxsearch.com ) using config file '/etc/sphinx/sphinx.conf' ... indexing index 'blog-index' ... collected 167 docs, 0.3 MB sorted 1.3 Mhits, 100.0 % done total 167 docs, 308020 bytes total 0.999 sec, 308139 bytes / sec, 167.06 docs / sec total 4 reads, 0.003 sec, 1118.3 kb / call avg, 0.7 msec / call avg total 22 writes, 0.009 sec, 437.3 kb / call avg, 0.4 msec / call avg rotating indices: successfully sent SIGHUP to searchd ( pid = 3058 ) . |
При перестройке индексов используем
server: / etc / sphinx # /usr/bin/indexer --all --rotate |
Данную команду можно добавить в cron
Для поиска, а заодно и тестирования работоспособности, используем
/ usr / bin / search test ... 1 . 'test' : 34 documents, 103 hits |
Ссылки