通过域模型更改使Lucene索引保持最新状态的策略
时间:2020-03-05 18:46:03 来源:igfitidea点击:
希望引起人们对更新应用程序的域模型对象进行更改时保持Lucene索引的想法。
有问题的应用程序是使用Hibernate的基于Java / J2EE的Web应用程序。我目前的工作方式是Hibernate映射模型对象都实现一个通用的"可索引"接口,该接口可以返回在Lucene中记录的一组键/值对。每当执行涉及此类对象的CRUD操作时,我都会通过JMS队列将其发送到消息驱动的bean中,该bean在Lucene中记录该对象的主键以及从Indexable对象的index()方法返回的键/值对。假如。
我对此方案的主要担心是,如果MDB落后并且无法跟上即将进行的索引操作,或者某种错误/异常阻止了对象被索引。结果是一段时间或者较长时间段的过期索引。
基本上,我只是想知道其他人针对这种事情提出了什么样的策略。不一定要寻找一个正确的答案,而是想像一堆"白板"类的想法,以使我的大脑思考替代方案。
解决方案
回答
更改消息:仅提供主键和当前日期,而不提供键/值对。mdb通过主键获取实体并调用index()。编制索引后,可以在索引中为消息日期设置一个值" updated"。仅当消息日期在索引的"更新"字段之后时,才更新索引。这样,我们就不会落后,因为我们总是总是先获取当前的键/值对。
另一种方法是:浏览http://www.compass-project.org。