与另外两名学生一起,我们正在开展一个项目。该架构如下:
使用网络爬虫在网站上获取信息并将结果存储在自己的数据库中的java服务。我们没有在这个项目上使用Hibernate。
一个J2E网站,使用maven / spring / hibernate(代码优先)
通过计划任务,我们将Web爬网程序数据库的结果插入到网站数据库中。
当然,我们希望在网站上对此结果进行快速研究!所以我在考虑使用HibernateSearch,这似乎是一个了不起的工具!
但是,我不确定我可以在我的情况下使用它:据我所知,Hibernate-search正在更新(hibernate)事务上的索引,并且因为插入不是通过hiberate完成的,所以我是想知道它是否仍然可以工作(hibernate是否会注意到数据库事务?),如果没有,是否有任何技巧迫使服务更新!
注意:我知道有一条指令要创建索引:
FullTextSession fullTextSession = Search.getFullTextSession(session);
fullTextSession.createIndexer().startAndWait()
但我不想每次插入时都删除/创建索引。
答案 0 :(得分:3)
Hibernate Search无法监听数据库中的内部事件,只有在使用Hibernate ORM执行您的insers时,它才能自动更新索引。
类似场景中的某些Hibernate Search用户只会定期触发MassIndexer
(例如每晚)。根据您的使用情况,这可能没问题,例如,如果您的Web应用程序是网上商店,人们通常可以在搜索结果中显示新项目,并在插入后有一些延迟。
如果这对您的用例不起作用,您有两种选择:
A"手册"通过Hibernate ORM加载新元素然后调用FullTextSession.index( entity )
来执行索引。