Установка sphinx в windows или операция denwer :)
Долгими мучениями удалось одолеть этого мощного демона :) Буду показывать по своим примерам, а вы уже используете под свои нужды
1. Качаем версию 2. Cоздаём папку sphinx в C:\server\ в итоге получаем C:\server\sphinx\ 3. Распаковываем из скаченного архива всё в неё 4. Pдесь же сразу (C:\server\sphinx\) создадим 2 папки index и log Папка index будет хранить файлы, которые проиндексирует Sphinx, а папка log – логи работы Sphinx 5. Далее в денвере или в вашем MySQL ищем файлик libmysql.dll и копируем его в C:\server\sphinx\bin\ Можно еще в C:\windows и C:windows\system32 Главное, чтобы версия этого файлика была одинаковая. В принципе первого варианта достаточно 6. Создаём конфиг файл в папке C:\server\sphinx\bin\ Имя файла можно произвольное но я выбрала такое sphinx.conf С содержанием: ## Конфигурационный файл Sphinx-а для индексации Живой улицы
####################### # # Описываем индексы # #######################
# Источник-родитель для всех остальных источников. Здесь указываются параметры доступа # к базе данных сайта source lsParentSource { type = mysql sql_host = localhost sql_user = root sql_pass = sql_db = livestreet sql_port = 3306 # Для ускорения работы прописываем путь до MySQL-го UNIX-сокета (чтобы # операции с БД происходили не через TCP/IP стек сервера) sql_sock = /var/run/mysqld/mysqld.sock mysql_connect_flags = 32 # 32- включение сжатие при обмене данными с БД # Включам нужную кодировку соединения и выключаем кеш запросов sql_query_pre = SET NAMES utf8 sql_query_pre = SET SESSION query_cache_type=OFF }
# Источник топиков source topicsSource : lsParentSource { # запрос на получения данных топиков sql_query = \ SELECT t_fast.topic_id, t_fast.topic_title, UNIX_TIMESTAMP(t_fast.topic_date_add) as topic_date_add, \ tc.topic_text, t_fast.topic_publish \ FROM prefix_topic as t_fast, prefix_topic_content AS tc \ WHERE t_fast.topic_id=tc.topic_id AND t_fast.topic_id>=$start AND t_fast.topic_id<=$end
# запрос для дробления получения топиков на неколько итераций sql_query_range = SELECT MIN(topic_id),MAX(topic_id) FROM prefix_topic # сколько получать объектов за итерацию sql_range_step = 1000
# Указываем булевый атрибут критерия "топик опубликован". Для возможности указания этого критерия при поиске sql_attr_bool = topic_publish
# Атрибут даты добавления, типа "время" sql_attr_timestamp = topic_date_add
# мульти-аттрибут "теги топика" sql_attr_multi = uint tag from query; SELECT topic_id, topic_tag_id FROM prefix_topic_tag
sql_ranged_throttle = 0 }
# Источник комментариев source commentsSource : lsParentSource { sql_query = \ SELECT comment_id, comment_text, UNIX_TIMESTAMP(comment_date) as comment_date, comment_delete \ FROM prefix_topic_comment \ WHERE comment_id>=$start AND comment_id<=$end
sql_query_range = SELECT MIN(comment_id),MAX(comment_id) FROM prefix_topic_comment sql_range_step = 5000
sql_attr_bool = comment_delete sql_attr_timestamp = comment_date }
####################### # # Описываем индексы # #######################
index topicsIndex { # Источник, который будет хранить данный индекса source = topicsSource path = C:/server/sphinx/index/topics
# Тип хранения аттрибутов docinfo = extern
mlock = 0
# Используемые морфологические движки morphology = stem_enru, soundex, metaphone
# Кодировака данных из источника charset2_type = utf-8
# Из данных источника HTML-код нужно вырезать html_strip = 1 }
# Индекс комментариев index commentsIndex { source = commentsSource path = C:/server/sphinx/index/comments
docinfo = extern
mlock = 0
morphology = stem_enru, soundex, metaphone
charset2_type = utf-8 }
####################### # # Настройки индексатора # #######################
indexer { # Лимит памяти, который может использавать демон-индексатор mem_limit = 32M }
####################### # # Настройка демона-поисковика # #######################
searchd { address = 127.0.0.1 # address = 192.168.0.1
# searchd TCP port number # mandatory, default is 3312 port = 3312
# Лог-файл демона log = C:/server/sphinx/log/searchd.log
# Лог поисковых запросов. Если закомментировать,то логировать поисковые строки не будет query_log = C:/server/sphinx/log/query.log
# Время в секундах, которое ждет демон при обмене данными с клиентом. По исчерпании происходит разрыв коннекта read_timeout = 5
# Максимальное количество одновременно-обрабатываемых запросов. 0 означает дофига, а точнее без ограничения max_children = 30
# Файл, в который сохраняется PID-процесса при запуске pid_file = C:/server/sphinx/log/searchd.pid }
Теперь установим демон в качестве службы. Настоятельно не рекомендую это делать через ваши виртуальные диски которые создал денвер! Делайте всё из корневого диска «С»
7. Запускаем Far Manager или CMD кому как удобно переходим в папку C:\server\sphinx\bin\ и пишем: searchd.exe --install --config C:\server\sphinx\bin\sphinx.conf
жмём enter и сфинкс установлен. Примечание! Обязательно указать полный путь к конфиг файлу или же Windows потом напрочь откажется запускать демона как службу!
8. Пуск ->Настройка->Панель управления->Администрирование->Службы В списке находим и запускаем.
 Теперь при каждом запуске Windows демон сам будет стартовать
Теперь нам осталось позаботиться об индексации через промежутки времени Для этого качаем программа для Windows Программа на русском языке и для бывшего СССР бесплатная регистрация
После установки nnCron добавляем ей задания Например индексация всего контента сайта (топики, комментарии)
C:\server\sphinx\bin\indexer.exe --rotate --all
--rotate передаст обновлённые данные демону без его перезагрузки!
если хотим топики отдельно индексировать через 2 часа например а комменты каждые 20 минут можно задать два задания так:
C:\server\sphinx\bin\indexer.exe --rotate topicsIndex
C:\server\sphinx\bin\indexer.exe --rotate commentsIndex
и в планировшике указать интервал выполнения задачи.
Примечание! Не рекомендую планировщику задавать задания через виртуальные диски, которые создал денвер — он их не выполнит!
Примечание 2. Демон нужно именно установить как службу и ЗАПУСТИТЬ! Иначе можно конечно через фар запускать и будет работать, НО:
Если демон запущен как служба он создаёт лог файлы и важный файл PID, через который он сообщается с индексатором без перезагрузки! А если запустить просто фаром, то демон приодеться постоянно перегружать в ручную, чтобы он понял чего от него хотят :)
Спасибо за внимание.
|
|