Использование основных и Дельта-индексов в sphinx

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

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

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

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

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

2 ответов


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

о delta, вам нужно использовать предварительный запрос для вычисления "limit" max (id) идентификатор основных индексов ниже предела, а дельта-до этого предела.

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

main - > где timefile где timefile >= сегодня ()


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

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