使用多台机器时陈旧的Lucene索引

时间:2014-08-12 11:22:32

标签: java mysql hibernate lucene hibernate-search

我已经启动并运行了Java / Hibernate / MySQL应用程序,并且它运行得非常好。

最近我一直在使用Lucene(Hibernate Search)来加速搜索并避免使用投影到数据库的往返。这也很有效,除了当应用程序在多台计算机上使用时索引变得陈旧。 Lucene在本地进行更改时很好地更新了本地索引,但它看不到其他机器的更改。

目前,我:

  • 每周重新索引一次
  • 更新所有记录的“上次修改”时间,并根据自上次索引后修改的内容在开始时更新本地索引

但这对删除不起作用。如果在一台计算机上删除了某些内容,它仍会在其他计算机上进行搜索。

有没有'标准'的方法来解决这个问题?我可以想到一些选择,但没有一个让我感到兴奋:

  1. 每晚完全重新索引(白天仍然陈旧)
  2. 维护已删除记录的表格,以便我可以使用它进行本地更新
  3. 在启动时执行到db的往返,以查找索引中的所有条目,但不在db
  4. 向db添加某种触发器,以便在删除某些内容时记录某些内容(这可用于更新和删除)
  5. 很难相信这是一个新问题,但我找不到任何令人信服的答案。

    任何帮助都非常感激。

0 个答案:

没有答案
相关问题