lucene 基于Sping Boot 微服务的应用程序中的全文搜索功能

nsc4cvqm  于 2022-11-07  发布在  Lucene
关注(0)|答案(2)|浏览(232)

我们有一个基于微服务的应用程序,它是在 Boot 中开发的。和C编写。前端使用Angular编写,后端由MySQL数据库和Hibernate for ORM组成。我们需要实现全文搜索功能,该功能将在UI上提供一个搜索框,用户可以在其中输入所选的文本。搜索必须能够从所有3个微服务的数据库中返回数据。我在最终确定相同的搜索技术方面面临着困难。在我的职权范围内的一些技术是
1.休眠搜索

  1. Apache解决方案
    1.ElasticSearch
    哪种技术是解决这个问题的最佳技术?如果可能的话,有没有类似的例子?
643ylb08

643ylb081#

Hibernate search看起来依赖于内部搜索解决方案,它可以提供全文搜索,这可能是普通的Apache Lucene或Elasticsearch。我不确定,但它的Elasticsearch集成,如果它已经成熟,作为version 6.0仍在开发阶段。
Hibernate search i.e. 5.11的较旧/稳定版本支持Elasticsearch 2.0到5.6。
但是看看你的查询,这取决于你使用的情况。也许下面的几点会对你有所帮助。

  • 您拥有得数据有多大,文档/数据得预期增长率是多少.
  • 对于此应用程序,您的写入速率与读取速率是多少?
  • 您有什么类型的搜索用例?您希望搜索有什么功能?例如自动完成、自动建议、突出显示、分面搜索
  • 您是在寻找分布式搜索还是在使用硬件方面有限制?
  • 是否需要支持多语言搜索?
  • 仅仅文本搜索就足够了吗?或者将来您还会对搜索日志或点击视图数据进行分析吗?
  • 当涉及到将文档摄取到搜索引擎中时,你有什么选择?如果是Elasticsearch,你可以很容易地使用Beats或Logstash。或者你可以简单地将原始数据转储到ES中,然后使用Ingest API的组合来做预处理/丰富/过滤,然后再次将处理过的数据推到Elasticsearch的不同索引中。

Solr和Elasticsearch都是很棒的技术,但如果你必须使用其中之一,我强烈建议使用Elasticsearch,因为它会在上述所有查询中帮助你,功能更强大的分布式模型,它有自己令人惊叹的DSL,非常成熟且易于使用,有优秀的管理工具/API用于数据管理,它的设置非常快速和简单,更不用说它的聚合查询了,它可以帮助你获得关于你已经摄取的文档的分析信息。
您还可以通过Kibana设置自己的 Jmeter 板,这将帮助您快速创建一些伟大的可视化工具。
优点是它本质上是完全RESTful的,这意味着它可以让您的应用程序部署变得更加轻松。我建议您从here开始,花点时间了解这项技术。
希望这对你有帮助!

umuewwlo

umuewwlo2#

对于全文搜索,Elasticsearch和Apache Solr是给定选项中的最佳选择。

然而,我强烈反对在不了解更多商业案例信息的情况下,Elasticsearch比Solr或其他方法更好。这两种技术对给定问题的表现是一样的,因为它们都构建在Apache Lucene搜索引擎上。
他们都提供了很好的REST客户端。
Here你可以在同一个Java项目中查看Apache Solr和Elasticsearch的示例实现。你也可以查看它们有什么不同,你更喜欢哪一个。
此外,还有六篇关于如何使用Apache Solr和Elasticsearch编写here的文章。最后一章是关于研究的,研究表明这两个引擎几乎是平等的,只有在非常具体的商业案例中才有区别。两者都有许多支持工具。

相关问题