【问题标题】:Hibernate search, updating indexes from a remote service休眠搜索,从远程服务更新索引
【发布时间】:2023-03-12 22:26:02
【问题描述】:

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

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

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

通过计划任务,我们将网络爬虫数据库中的结果插入网站数据库。

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

但是,我不确定是否可以在我的情况下使用它:据我所知,Hibernate-search 正在更新(休眠)事务的索引,并且由于插入不是通过休眠完成的,所以我想知道它是否还能工作(hibernate 会注意到数据库事务吗?),如果不是,是否有任何技巧可以通过服务强制更新!

注意:我知道有创建索引的说明:

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

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

【问题讨论】:

    标签: hibernate hibernate-search


    【解决方案1】:

    Hibernate Search 无法监听来自数据库的内部事件,它只能自动更新索引,前提是您使用 Hibernate ORM 执行插入操作。

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

    如果这不适用于您的用例,您有两种选择:

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

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

    【讨论】:

    • 感谢您的回答 :) 触发 MassIndexer 对我来说是最简单的方法!
    猜你喜欢
    • 2015-04-17
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多