Список всех ключей документов в индексе Solr для синхронизации базы данных

Мне нужно синхронизировать индекс Solr с таблицей базы данных. В любой момент может потребоваться добавить или удалить документы из индекса Solr. Природа базы данных не позволяет функции дельта-импорта обработчика импорта данных обнаруживать изменения.

Мое предложенное решение состояло в том, чтобы получить список всех первичных ключей таблицы базы данных и всех уникальных ключей индекса Solr (которые содержат одно и то же целочисленное значение) и сравнить эти списки. Я бы использовал SolrJ для этого.

Однако для получения всех документов Solr требуется печально известный подход жесткого кодирования максимального целочисленного значения в качестве предела количества результатов. Использование этого подхода, кажется, не одобряется. Есть ли в моей ситуации повод игнорировать этот совет или есть другой подход?


person Kevin    schedule 12.10.2013    source источник


Ответы (1)


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

person Karol Sikora    schedule 12.10.2013