Indexing 保持Lucene索引与域模型更改同步的策略

Indexing 保持Lucene索引与域模型更改同步的策略,indexing,lucene,Indexing,Lucene,在对应用程序的域模型对象进行更改时,希望了解人们对保持Lucene索引最新的想法 该应用程序是一个基于Java/J2EE的web应用程序,使用Hibernate。我目前的工作方式是,Hibernate映射的模型对象都实现了一个通用的“可索引”接口,该接口可以返回一组记录在Lucene中的键/值对。每当执行涉及此类对象的CRUD操作时,我都会通过JMS队列将其发送到消息驱动bean中,该bean在Lucene中记录对象的主键以及从提供的可索引对象的index()方法返回的键/值对 我对这个方案的主

在对应用程序的域模型对象进行更改时,希望了解人们对保持Lucene索引最新的想法

该应用程序是一个基于Java/J2EE的web应用程序,使用Hibernate。我目前的工作方式是,Hibernate映射的模型对象都实现了一个通用的“可索引”接口,该接口可以返回一组记录在Lucene中的键/值对。每当执行涉及此类对象的CRUD操作时,我都会通过JMS队列将其发送到消息驱动bean中,该bean在Lucene中记录对象的主键以及从提供的可索引对象的index()方法返回的键/值对

我对这个方案的主要担忧是,MDB是否落后,无法跟上即将到来的索引操作,或者是否有某种错误/异常阻止对象被索引。结果是一个过时的索引,可以是排序索引,也可以是长时间索引


基本上,我只是想知道其他人为这类事情想出了什么样的策略。不一定要寻找一个正确的答案,但我在想象一个“白板”式的想法列表,让我的大脑思考其他选择。

改变信息:只提供主键和当前日期,而不是键/值对。mdb通过主键获取实体并调用index()。编制索引后,在索引中将值“updated”设置为消息日期。仅当消息日期在索引的“更新”字段之后时,才更新索引。这样您就不能落后,因为您总是先获取当前的键/值对


另一种选择是:看看。

公认的答案是8岁了,已经过时了

Compass项目已经很久没有维护了,因为它的主要开发人员开始创建优秀的Elasticsearch

现代的答案是使用,它可以直接映射到Lucene索引,也可以通过Elasticsearch映射到Lucene索引