Зачем нужно запускать дельта-индексацию после новых записей и изменения в записях - PullRequest
0 голосов
/ 28 марта 2019

В соответствии с моим поиском и пониманием дельта-индексации, когда мы добавляем новые записи или вносим изменения в записи, нам необходимо повторно проиндексировать sphinx, чтобы показать эти данные, иначе они не будут отображаться.

Но я проверяю, что данные обновляются без переиндексации. Так что цель переиндексации индексации

1 Ответ

1 голос
/ 29 марта 2019

В Thinking Sphinx существует различие между полным переиндексированием, при котором все индексы обрабатываются повторно (через rake ts:index и rake Ts:rebuild), и обработкой одного индекса.

Если у вас включена дельта-индексация, это означает, что дельта-индекс для данной модели автоматически обрабатывается сразу после изменения записи или добавления новой записи. Это можно сделать как часть стандартного процесса обратного вызова (при использовании :delta => true) или с помощью фонового работника (Sidekiq, DelayedJob и т. Д.), Если вы используете для них соответствующий дельта-гем.

Все это означает, что вам не нужно запускать полную повторную обработку всех индексов, чтобы изменения присутствовали - дельта-индекс автоматически обрабатывается заново, а изменения записи отражаются в Sphinx.

Стоит отметить, что чем больше происходит изменений, тем больше становится дельта-индекс и, следовательно, тем медленнее он обрабатывается. Таким образом, полный повторный индекс все еще требуется на регулярной основе (ежечасно? Ежедневно? Зависит от вашего приложения), чтобы сократить время обработки дельты.

...