Получите код https://github.com/rlancer/AlgoliaRethinkDB

В Collaborizm мы пользуемся поиском по всему приложению.

Первоначально мы использовали чистый ReQL для поддержки наших функций поиска, но по мере роста это стало проблематичным, поскольку RethinkDB не поддерживает правильную индексацию для поиска. Оценив несколько технологий, мы выбрали Algolia. К счастью, реализовать Algolia с RethinkDB было несложно.

Это руководство должно предоставить базовую структуру, необходимую для подключения Algolia к RethinkDB. Использование каналов изменений в реальном времени позволяет вам забыть о подключении всех мест, где в вашем приложении изменяются данные. Вместо этого вы просто позволяете потоку изменений сообщать вам об изменении данных и отправляете их в Algolia.

Запуск кода
Требуется Node.js v4.x или выше

Из терминала

Если все сработало, посетите http: // localhost: 3006, чтобы запустить пользовательский интерфейс.

Тебе следует увидеть

Щелкните, чтобы добавить 100 случайных имен в базу данных, откройте консоль узла, чтобы увидеть канал изменений в действии.

Щелкните результат поиска, чтобы просмотреть / удалить его, откройте консоль узла, чтобы увидеть, как дескриптор канала изменений удаляется.

Важные части кода

Особые соображения

Поскольку невозможно гарантировать, что обновление правильно индексируется в 100% случаев, важно предоставить механизм для повторной синхронизации любых данных, которые могли не синхронизироваться через канал изменений.

В нашем приложении мы делаем это через Cron, который синхронизирует недавно измененные данные. Это действительно приводит к нескольким операциям Algolia за одно обновление, но это единственный надежный способ обеспечить правильную синхронизацию данных даже в сценариях сбоя в крайних случаях.

Старайтесь не переиндексировать слишком много данных слишком часто, иначе они могут повредить ваши операции Algolia.