Как обновить главный и дельта-индексы Sphinx - PullRequest
4 голосов
/ 10 января 2011

Я прочитал документацию по Sphinx и различные ресурсы, но меня смущает процесс поддержки главных и дельта-индексов.Пожалуйста, дайте мне знать, если это правильно:

  • Есть таблица, которая разбивает поисковый индекс на last_update_time (НЕ идентификатор, как в учебнике http://sphinxsearch.com/docs/1.10/delta-updates.html)

  • Обновление дельта-индекса каждые 15 минут. Дельта-индекс захватывает только те записи, которые были обновлены> last_update_time:

    indexer --rotate --config /opt/sphinx/etc/sphinx.conf delta
    
  • Обновление основного индекса каждый час путем слияния дельты с использованием:

    indexer --merge main delta --merge-dst-range deleted 0 0 --rotate
    

Предварительный запрос SQL обновит last_update_time до NOW(), что приведет к повторному разбиению индексов

Путаница: произойдет ли объединение дозапрос SQL?

  • После обновления основного индекса немедленно обновите дельта-индекс, чтобы очистить его:

    indexer --rotate --config /opt/sphinx/etc/sphinx.conf delta
    

РЕДАКТИРОВАТЬ: КакБудет ли удаление записей даже работать? Так как дельта-индекс будет содержать удаленные записи, записи будут удалены из поисковых запросов только после слияния дельта-индекса в основной?

1 Ответ

2 голосов
/ 13 января 2011

Чтобы справиться с удалениями, вам нужно взглянуть на килллист, он в основном определяет критерии удаления:

http://sphinxsearch.com/docs/manual-1.10.html#conf-sql-query-killlist

В нашем примере мы строим нашу основную ежедневную работу,ранним утром, а затем просто запускайте дельта-обновление (включая список убийц) каждые 5 минут.

По поводу слияния я не уверен, так как никогда не использовал его.

...