目的:基于项目需求进行技术调研支持全局资源搜索,保证搜索结果的实时性、准确性、多样性。

搜索功能大致流程:

1.创建索引

2.增量同步数据

3.分词器处理

4.语义分析、自定义语义

5.query查询处理

6.相关性排序

技术选型:

目前常用的搜索引擎有Solr和Elasticsearch

Elasticsearch是一个实时的分布式搜索和分析引擎,可以处理大规模数据,可以用于全文搜索、结构化搜索及分析,Elasticsearch使用Lucene作为内部引擎,基于统一开发API进行操作,支持多语言、多客户端接入。

Elasticsearch作为分布式实时文件存储,并将每一个字段都编入索引,使其可以用于搜索。

Elasticsearch优点

1.Elasticsearch是分布式的,不需要其他组件,方便扩展

2.Elasticsearch建立实时搜索时查询速度快

3.默认配置化完善,搭建方便,开发学习成本低

4.基于RESTful API进行数据操作,方便接入

Elasticsearch缺点

1.支持数据类型较少,json格式为常用数据类型

2.高级搜索功能较少需要开发者集成,核心功能就是存储及搜索

Solr是一款经典的搜索引擎,在Elasticsearch没有面世之前Solr是必选项,其主要功能包括全文搜索、命中标示、数据库集成、富文本处理等,Solr采用java编写运行于Servlet容器中,定制开发复杂配置较多。

Solr优点

1.Solr比较成熟,具有成熟的贡献者社区

2.支持添加多种数据格式及索引

Solr缺点

1.开发配置复杂,上手成本比较高

2.在大数据量下搜索性能下降

3.建立实时索引时,实时索引效率不高

Solr于Elasticsearch应用场景对比

Elasticsearch使用场景

对于日志数据分析,ES进行复杂的数据分析

对于主要用于近实时的全文搜索和数据分析 

Solr使用场景

对于存储在文件中的日志 可以导入到solr中做分析,

对于关系型数据库里需要做全文搜索的字段 可以导入到slor 中。

总结

项目中的搜索功能建议使用Elasticsearch

1.考虑后续数据量的可扩展性及查询性能

2.Elasticsearch支持单机也支持分布式,内置分布式组件,solr需通过Aache Zookeeper实现分布式

3.除搜索之外,Elasticsearch还支持实时的过滤、分析、统计功能,可以为后续业务做扩展

4.在创建索引的同时进行搜索,Elasticsearch比solr更优

5.随着数据量增加Elasticsearch无明显的性能损失

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注