Как я могу узнать, изменился ли индекс Solr, включая какие-либо изменения, добавления или удаления документа? - PullRequest
0 голосов
/ 21 октября 2018

Для нас есть сценарий использования, в котором мы раскручиваем встроенный сервер Solr (используя API SolrJ EmbeddedSolrServer) из удаленного экземпляра Solr.Это сделано для того, чтобы мы могли очень быстро обслуживать документы в конвейере запросов.

Одна из вещей, на которых я застрял, - это определение того, был ли удаленный экземпляр solr каким-либо образом изменен с момента последней синхронизации,Очевидно, наивный способ - это сравнить документы.по одному за раз.Однако это было бы крайне неэффективно и полностью сводило бы на нет цель быть быстрым.

Спасибо за любые советы или рекомендации.

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Каждой версии индекса Lucene присваивается номер версии.Этот номер версии предоставляется через обработчик репликации (который вы, возможно, уже используете для репликации индекса в локальный встроенный экземпляр Solr):

http://host:port/solr/core_name/replication?command=indexversion

Возвращает версию последнего реплицируемого индекса на указанном главном или подчиненном устройстве.

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

0 голосов
/ 22 октября 2018

Если вы хотите отслеживать отдельные документы, то у вас может быть поле даты, которое будет применяться для каждого документа на стороне solr.

Я имею в виду, что вы можете добавить новое поле даты в файл схемы, который будет иметь имя UpdateDateTime, и это поле обновляется каждый раз, когда объект документа изменяется или новый документ добавляется.

Я не очень уверен, как вы поддерживаете удаление документов на стороне Solr.Если вы не поддерживаете удаление, у вас может быть другое поле boolen, которое будет isDeleted.

...