Использование основных и Дельта-индексов в 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, там может быть небольшая задержка в выдаче новые индексы.