【问题标题】:Strategies for keeping a Lucene Index up to date with domain model changes使 Lucene 索引与域模型更改保持同步的策略
【发布时间】:2010-09-07 11:27:25
【问题描述】:

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

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

我对这个方案的主要担忧是 MDB 是否落后并且无法跟上即将到来的索引操作,或者如果某种错误/异常阻止对象成为索引。结果是某个排序或较长时间段的过期索引。

基本上我只是想知道其他人针对这种事情想出了什么样的策略。不一定要寻找一个正确的答案,但我正在想象一系列“白板”之类的想法,让我的大脑思考替代方案。

【问题讨论】:

    标签: indexing lucene


    【解决方案1】:

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

    作为替代方案:查看http://www.compass-project.org

    【讨论】:

      【解决方案2】:

      现在接受的答案是 8 岁,而且已经过时了。

      Compass 项目已经很久没有维护了,因为它的主要开发人员继续创建出色的 Elasticsearch。

      对此的现代答案是使用Hibernate Search,它可以直接或通过 Elasticsearch 映射到 Lucene 索引。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-05
        • 2012-12-04
        • 1970-01-01
        • 1970-01-01
        • 2018-12-23
        • 2015-07-09
        相关资源
        最近更新 更多