Hibernate搜索,更新远程服务的索引

时间:2017-07-14 13:27:13

标签: hibernate hibernate-search

与另外两名学生一起,我们正在开展一个项目。该架构如下:

  • 使用网络爬虫在网站上获取信息并将结果存储在自己的数据库中的java服务。我们没有在这个项目上使用Hibernate。

  • 一个J2E网站,使用maven / spring / hibernate(代码优先)

通过计划任务,我们将Web爬网程序数据库的结果插入到网站数据库中。

当然,我们希望在网站上对此结果进行快速研究!所以我在考虑使用HibernateSearch,这似乎是一个了不起的工具!

但是,我不确定我可以在我的情况下使用它:据我所知,Hibernate-search正在更新(hibernate)事务上的索引,并且因为插入不是通过hiberate完成的,所以我是想知道它是否仍然可以工作(hibernate是否会注意到数据库事务?),如果没有,是否有任何技巧迫使服务更新!

注意:我知道有一条指令要创建索引:

FullTextSession fullTextSession = Search.getFullTextSession(session);
fullTextSession.createIndexer().startAndWait()

但我不想每次插入时都删除/创建索引。

1 个答案:

答案 0 :(得分:3)

Hibernate Search无法监听数据库中的内部事件,只有在使用Hibernate ORM执行您的insers时,它才能自动更新索引。

类似场景中的某些Hibernate Search用户只会定期触发MassIndexer(例如每晚)。根据您的使用情况,这可能没问题,例如,如果您的Web应用程序是网上商店,人们通常可以在搜索结果中显示新项目,并在插入后有一些延迟。

如果这对您的用例不起作用,您有两种选择:

  • 使您的插入事务使用Hibernate ORM
  • 手动生成事件到Hibernate Search

A"手册"通过Hibernate ORM加载新元素然后调用FullTextSession.index( entity )来执行索引。