有一个用例,我们从远程solr实例启动一个嵌入式solr-server(使用SolrJ EmbeddedSolrServer api)。这样我们就可以在查询管道中以极快的速度提供文档。
我要坚持的一件事是确定自上次同步以来是否已以任何方式修改了远程solr实例。显然,比较幼稚的方法是比较文档。一次一个。但是,这将是极其低效的,并且完全否定了快速的整个目的。
感谢任何提示或建议。
答案 0 :(得分:3)
每个Lucene索引版本都分配有一个版本号。这个版本号是exposed through the Replication Handler(您可能已经在使用它来将索引复制到本地嵌入式Solr实例):
http://host:port/solr/core_name/replication?command=indexversion
返回指定主服务器或从属服务器上最新可复制索引的版本。
如果您想手动进行更多操作,可以使用自动添加到最新版本的Solr中的所有文档中的_version_
字段,并使用该字段来获取任何较大的_version_
值而不是索引中当前最大的版本。假设您使用默认的_version_
编号(您必须使用默认编号,因为它在内部也用于Solr Cloud)。
答案 1 :(得分:1)
如果要跟踪各个文档,则可以有一个日期字段,该字段将应用于solr端的每个文档。
我的意思是,您可以在架构文件中添加一个新的日期字段,其名称将为UpdateDateTime
,并且每次文档实体被修改或新添加的文档时,此字段都会更新。
我不太确定如何在solr端保持删除文档。如果您不维护删除操作,则可以使用另一个布尔字段,即isDeleted
。