2010-10-02 2 views
10

Im переключение полнотекстового поиска на моем сайте на sphinx. Я буду использовать SphinxSE для выполнения поиска.Использование основных и дельта-индексов в сфинксе

Я создал 2 индексов, как указано в руководстве: http://www.sphinxsearch.com/docs/manual-0.9.9.html#live-updates

Это, кажется, работает, и индекс разные вещи в своем собственном индексе, но Im немного запутался о том, как я должен обрабатывать обновления индекса, слияния и восстановление.

Как я понимаю, мне нужно запустить «indexer delta -rotate» каждые 5 минут или около того, что добавит новые представления в индекс. Затем один раз в день я собирал дельта-индекс в основной индекс, запустив «indextate delta -rotate». то раз в месяц или около того я запустил «indexer -all», чтобы перестроить все индексы.

Я делаю это правильно, или я чего-то не хватает?

+0

Для записи - это в значительной степени моя настройка, все через cron. +1 для запроса, поскольку, как я был набросан на том, как он работает в данный момент. Давайте услышим эти лучшие практики! –

+0

Его просто каждый раз, когда вы запускаете любую из этих команд ... не будет ли поиск работать во время его работы? – 2010-10-02 23:29:42

+0

Ну, в моем случае .. indexer --all --rotate --config /path/to/sphinx.conf выполняется за 0.024 секунды (75k docs в секунду, запустив 5 индексов для 4 доменов). Если мои индексы значительно возрастут, у меня возникнет проблема. –

ответ

2

-rotate будет просто создавать индекс в tmp (нужен дисковый диск) и переключать + перезапускать поиск, когда это будет сделано.

о delta, вам необходимо использовать предварительный запрос для вычисления максимального значения «limit» max (id) , а индекс дельта до этого предела.

, если у вас есть метку времени (индексируется, если это возможно), вы можете использовать его

главная -> где timefile < сегодня() дельта -> где timefile> = сегодня()

3

Звучит очень похоже на настройку, которую я сделал для клиента. И нет, поиск не прекратит работать во время обновлений. Из документов Sphinx:

-rotate используется для вращения индексов. Если у вас есть ситуация, когда вы можете воспользоваться поисковой функцией без проблем, вам не нужно беспокоиться, почти наверняка нужно будет поддерживать поиск работает пока индексирует новые документы. --rotate создает второй индекс , параллельный первому (в том же месте, просто в том числе .new в именах файлов). После завершения индексатор уведомляет Searchd с помощью посылки сигнала SIGHUP и SearchD будет попытки переименовать индексы (переименование существующих включить .old и переименование .new заменить их), а затем начать обслуживать от новых файлов. В зависимости от настройки of seamless_rotate может быть небольшая задержка в поиске новых индексов.