关系型数据库MySql-模糊搜索优化(like %abc%):全文搜索引擎技术选型
1.阿里云OpenSearch
阿里云开放搜索OpenSearch是一款阿里巴巴自主研发的大规模分布式搜索引擎平台,该平台承载了淘宝、天猫、1688、神马搜索、口碑、菜鸟等搜索业务,通过OpenSearch云服务的方式,将阿里巴巴成熟的搜索技术共享给广大开发者。
https://help.aliyun.com/document_detail/29119.html
2.Lucene
Lucene 是一个 JAVA 搜索类库,它本身并不是一个完整的解决方案,需要额外的开发工作。
优点:成熟的解决方案,有很多的成功案例。apache 顶级项目,正在持续快速的进步。庞大而活跃的开发社区,大量的开发人员。它只是一个类库,有足够的定制和优化空间:经过简单定制,就可以满足绝大部分常见的需求;经过优化,可以支持 10亿+ 量级的搜索。
缺点:需要额外的开发工作。所有的扩展,分布式,可靠性等都需要自己实现;非实时,从建索引到可以搜索中间有一个时间延迟,而当前的“近实时”(Lucene Near Real Time search)搜索方案的可扩展性有待进一步完善
3.IndexTank
基于 Lucene 的一系列解决方案,包括 准实时搜索 zoie ,facet 搜索实现 bobo ,机器学习算法 decomposer ,摘要存储库 krati ,数据库模式包装 sensei 等等
优点:经过验证的解决方案,支持分布式,可扩展,丰富的功能实现
缺点:与 linkedin 公司的联系太紧密,可定制性比较差
https://www.oschina.net/news/24262/linkedin-indextank
3.Solr
优点:
-
Solr有一个更大、更成熟的用户、开发和贡献者社区。
-
支持添加多种格式的索引,如:HTML、PDF、微软 Office 系列软件格式以及 JSON、XML、CSV 等纯文本格式。
-
Solr比较成熟、稳定。
-
不考虑建索引的同时进行搜索,速度更快。
缺点:
-
建立索引时,搜索效率下降,实时索引搜索效率不高。
4.Elasticsearch
优点:
-
Elasticsearch是分布式的。不需要其他组件,分发是实时的,被叫做”Push replication”。
-
Elasticsearch 完全支持 Apache Lucene 的接近实时的搜索。
-
处理多租户(multitenancy)不需要特殊配置,而Solr则需要更多的高级设置。
-
Elasticsearch 采用 Gateway 的概念,使得完备份更加简单。
-
各节点组成对等的网络结构,某些节点出现故障时会自动分配其他节点代替其进行工作。
缺点:
-
只有一名开发者(当前Elasticsearch GitHub组织已经不只如此,已经有了相当活跃的维护者)
-
还不够自动(不适合当前新的Index Warmup API)