我有一个弹簧靴,弹簧数据JPA(Hibernate)Web应用程序,并希望介绍文本搜索功能。
我了解以下
-
Hibernate Search或Spring-Data-*可以集成到我的应用中
-
Hibernate搜索可以与嵌入式Lucene或外部弹性一起使用搜索。
-
外部弹性搜索/solr有其自身的好处,但我可以接受
也嵌入为。
我的问题
- 哪个图书馆更适合轻松开发和维护。
- 我看到了Solr vs Elasticsearch的许多优缺点,但需要专业人士冬眠搜索的缺点与弹簧数据 - *
- 我在现有应用。但是在春季data- 上什么都没有,如何重新索引或触发在Spring-DATA中的现有数据库数据索引 -
我显然很有偏见,因为我是一个冬眠的开发人员,但是我至少可以提供一些专注于休眠搜索的元素。关于哪个是"更好的",这是您判断的。
主要区别在于,Hibernate搜索提供了JPA和您选择的索引(Lucene或Elasticsearch)之间的集成:
- Hibernate搜索将根据JPA实体的更改在您的全文索引中自动添加/Update/Delete文档(一旦您提交交易,请立即)。
- Hibernate搜索将允许您构建全文查询(全文世界),并将结果检索为托管实体(JPA世界)。
其他一些元素:
- 如果您不需要分布式索引,那么Hibernate搜索可以在嵌入式Lucene模式下运行,而无需所有弹性搜索堆栈。它可能会更轻巧。
Hibernate搜索是当前在自定义您的elasticsearch映射或使用高级Elasticsearch功能时,由于具有抽象层。编辑:不再是TRUE:现在冬眠搜索6已发布。- 过去曾在一个弹簧data-hibernatesearch模块进行工作,但不再积极维护:https://github.com/snowdrop/snowdrop/spring-boot-boot-hibernate-search-search-booster