随着对应用程序的域模型对象的更改,希望让人们了解如何使Lucene索引保持最新状态.
有问题的应用程序是一个使用Hibernate的基于Java/J2EE的Web应用程序.我目前的工作方式是Hibernate映射模型对象都实现了一个通用的"Indexable"接口,它可以返回一组记录在Lucene中的键/值对.每当执行涉及此类对象的CRUD操作时,我都会通过JMS队列将其发送到消息驱动的bean中,该bean在Lucene中记录对象的主键以及从Indexable对象的index()方法返回的键/值对.提供.
我对此方案的主要担忧是,如果MDB落后并且无法跟上即将发生的索引操作,或者某种错误/异常会阻止对象成为索引.结果是排序或长时间段的过期索引.
基本上我只是想知道其他人为这类事情提出了什么样的策略.不一定要寻找一个正确的答案,但我想象一个"白板"的想法列表,让我的大脑思考替代品.
更改消息:只需提供主键和当前日期,而不是键/值对。您的 mdb 通过主键获取实体并调用 index()。建立索引后,您可以在索引中将“已更新”值设置为消息日期。仅当消息日期位于索引的“已更新”字段之后时,才更新索引。这样你就不会落后,因为你总是先获取当前的键/值对。
作为替代方案:查看http://www.compass-project.org。
归档时间: |
|
查看次数: |
1046 次 |
最近记录: |