我有一个 Spring Boot、Spring Data JPA (hibernate) Web 应用程序,想要引入文本搜索功能。
我了解以下内容
hibernate search 或 spring-data-* 都可以集成到我的应用程序中
Hibernate搜索可以与嵌入式Lucene或外部elastic一起工作
搜索。
-
外部弹性搜索/ solr 有其自身的好处,但我可以接受
嵌入式也开始。
我的问题
- 哪个库比较好,方便开发和维护。
- 我看到 solr 与 elasticsearch 的许多优点和缺点,但需要优点和缺点
Hibernate 搜索与 spring-data-* 的缺点
- 我找到了一个在现有的项目中引入 Hibernate Search 的示例
应用。但 spring-data- 上没有任何内容、如何重新索引或触发
spring-data- 中现有数据库数据的索引
由于我是一名 Hibernate 开发人员,所以我显然有偏见,但我至少可以提供一些专注于 Hibernate 搜索的元素。至于哪个“更好”,那就由你来判断了。
主要区别在于 Hibernate Search 提供 JPA 和您选择的索引(Lucene 或 Elasticsearch)之间的集成:
- Hibernate Search 将根据 JPA 实体的更改(一旦提交事务)自动添加/更新/删除全文索引中的文档。
- Hibernate Search 将允许您构建全文查询(全文世界),并将结果检索为托管实体(JPA 世界)。
据我了解,Spring-Data-Elasticsearch 专注于访问 Elasticsearch,没有任何 JPA 集成。也就是说,你可以使用Spring-Data-JPA,也可以使用Spring-Data-Elasticsearch,但是它们不会相互通信。您将有两个独立的模型,您将分别更新和查询它们。
其他一些元素:
- 如果不需要分布式索引,Hibernate Search 可以在嵌入式 Lucene 模式下运行,无需所有 Elasticsearch 堆栈。它可能会更轻。
-
Hibernate Search is currently not very flexible when it comes to customizing your Elasticsearch mapping or using advanced Elasticsearch features, because of the abstraction layer. EDIT: That's no longer true now that Hibernate Search 6 has been released.
- Spring-Data-HibernateSearch 模块过去曾被开发过,但不再积极维护:https://github.com/snowdrop/spring-boot-hibernate-search-booster
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)