Вы можете начать отслеживать изменения, когда элементы изменены или удалены из вашей БД.Тогда вам нужно будет только просмотреть этот список, чтобы обновить свой индекс.Или добавьте поле «созданный / последний обновленный» к вашим объектам БД.Но это может быть сложной задачей в зависимости от архитектуры и логики вашей системы.
Вы также можете сэкономить на проверке наличия ваших элементов в базе данных или индексе и просто переиндексировать все - на наборах данных, не очень больших, которые могли быбыть быстрее (просто убедитесь, что тот же индексированный объект получит тот же идентификатор Solr, что и раньше, чтобы заменить его более старую версию вместо дублирования).
Другой способ - использовать только так называемый «дельта-индекс»содержащий недавно измененные элементы, поэтому вам нужно объединить Solr с Solr, а не Solr с DB.
Если вам все еще нужно проверять каждый отдельный элемент, вероятно, было бы лучше сначала запросить их у DB, посколькуПоиск Solr, как правило, быстрее.Затем вы можете выполнить запрос Solr в пакете, запрашивающем сразу несколько документов по их идентификатору, и пройти через этот набор, чтобы сопоставить их с вашими записями в БД.Так что что-то вроде запроса N результатов из БД / выдачи их идентификаторов Solr / запроса N документов Solr по идентификатору в одном наборе запросов / совпадений должно работать.Но это, очевидно, метод "грубой силы".