一、搜刮引擎基本引见
二、罕见搜刮引擎框架引见与对照
三、参考文章
一、搜刮引擎基本引见
1. 甚么是搜刮引擎
搜刮引擎,一样平常指的是收集了万维网上几万万到几十亿个网页并对网页中的每一个词(即关键词)举行索引,竖立索引数据库的全文搜刮引擎。当用户查找某个关键词的时刻,一切在页面内容中包罗了该关键词的网页都将作为搜刮效果被搜出来。再经由庞杂的算法举行排序(或许包罗贸易化的竞价排名、贸易推行或许告白)后,这些效果将依照与搜刮关键词的相干度上下(或与相干度毫无关系),顺次分列。
2. 传统的搜刮与搜刮引擎对照
2.1 传统做法
(1)文档中运用体系的Find查找
(2)mysql中运用like隐约查询
存在题目:
(1)海量数据中不克不及及时相应,少许数据可以或许经由过程传统的MySql竖立索引处置惩罚
(2)一些无用词不克不及举行过滤,没法分词
(3)数据量大的话难以拓展
(4)雷同的数据难以举行类似度最高的举行排序
2.2 搜刮引擎做法
(1)存储非结构化的数据
(2)疾速检索和相应我们须要的信息,快-准
(3)举行相干性的排序,过滤等
(4)可以或许去掉停用词(没有特别寄义的词,好比英文的a,is等,中文: 这,的,是等),框架一样平常支撑可以或许自界说停用词
二、罕见搜刮引擎框架引见与对照
1. Java 全文搜刮引擎框架 Lucene
1.1 简介
Lucene的开辟言语是Java,也是Java家属中最为着名的一个开源搜刮引擎,在Java天下中已经是规范的全文检索顺序,它供应了完整的查询引擎和索引引擎,没有中文分词引擎,须要自身去完成,因而用Lucene去做一个搜素引擎须要自身去架构,别的它不支撑及时搜刮。然则solr和elasticsearch都是基于Lucene封装。
1.2 长处
成熟的处置惩罚计划,有许多的胜利案例。apache 顶级项目,正在延续疾速的进步。重大而活泼的开辟社区,大批的开辟人员。它只是一个类库,有充足的定制和优化空间:经由简朴定制,就可以或许知足绝大局部罕见的需求;经由优化,可以或许支撑 10亿+ 量级的搜刮。
1.3 瑕玷
须要分外的开辟事情。一切的扩大,分布式,牢靠性等都须要自身完成;非及时,从建索引到可以或许搜刮中心有一个时候延迟,而以后的“近及时”(Lucene Near Real Time search)搜刮计划的可扩大性有待进一步完美.
2. Apache Solr
2.1 简介
Solr是一个高机能,接纳Java开辟,基于Lucene的全文搜刮效劳器。文档经由过程Http运用XML加到一个搜刮鸠合中。查询该鸠合也是经由过程 http收到一个XML/JSON相应来完成。它的重要特征包罗:高效、天真的缓存功用,垂直搜刮功用,高亮显现搜刮效果,经由过程索引复制来进步可用性,提 供一套壮大Data Schema来界说字段,范例和设置文本剖析,供应基于Web的治理界面等。
2.2 长处
(1)Solr有一个更大、更成熟的用户、开辟和贡献者社区。
(2)支撑增添多种花样的索引,如:HTML、PDF、微软 Office 系列软件花样以及 JSON、XML、CSV 等纯文本花样。
(3)Solr对照成熟、稳固。
(4)不斟酌建索引的同时举行搜刮,速率更快。
2.3 瑕玷
竖立索引时,搜刮效力下落,及时索引搜刮效力不高
3. Elastic Search
3.1 简介
ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜刮引擎。设想用于云盘算中,可以或许到达及时搜刮,稳固,牢靠,疾速,装置运用轻易。支撑经由过程HTTP运用JSON举行数据索引。
3.2 长处
(1)Elasticsearch是分布式的。不须要其他组件,分发是及时的,被叫做”Push replication”。
(2)Elasticsearch 完整支撑 Apache Lucene 的靠近及时的搜刮。
(3)处置惩罚多租户(multitenancy)不须要特别设置装备摆设,而Solr则须要更多的高等设置。
(4)Elasticsearch 接纳 Gateway 的观点,使得完备份越发简朴。
各节点构成对等的网络结构,某些节点涌现毛病时会自动分派其他节点替代其举行事情。
3.3 瑕玷
还不敷自动(不适合以后新的Index Warmup API)
4. Elasticsearch 与 Solr 的对照总结
(1)两者装置都很简朴
(2)Solr 运用 Zookeeper 举行分布式治理,而 Elasticsearch 自身带有分布式谐和治理功用;
(3)Solr 支撑更多花样的数据,而 Elasticsearch 仅支撑json文件花样;
(4)Solr 官方供应的功用更多,而 Elasticsearch 自身更注重于中心功用,高等功用多有第三方插件供应;
(5)Solr 在传统的搜刮运用中显示好过 Elasticsearch,但在处置惩罚及时搜刮运用时效力显着低于 Elasticsearch。
(6)总之,Solr 是传统搜刮运用的有力处置惩罚计划,但 Elasticsearch 更适用于新兴的及时搜刮运用。
5. Sphinx
5.1 简介
Sphinx一个基于SQL的全文检索引擎,特别为一些脚本言语(PHP,Python,Perl,Ruby)设想搜刮API接口。
Sphinx是一个用C++言语写的开源搜刮引擎,也是如今对照主流的搜刮引擎之一,在竖立索引的事宜方面比Lucene快50%,然则索引文件比Lucene要大一倍,因而Sphinx在索引的竖立方面是空间调换事宜的战略,在检索速率上,和lucene相差不大,但检索精准度方面Lucene要优于Sphinx,别的在到场中文分词引擎难度方面,Lucene要优于Sphinx.个中Sphinx支撑及时搜刮,运用起来对照简朴轻易.
Sphinx可以或许异常轻易的与SQL数据库和脚本言语集成。以后体系内置MySQL和PostgreSQL 数据库数据源的支撑,也支撑从规范输入读取特定花样 的XML数据。经由过程修正源代码,用户可以或许自行增添新的数据源(比方:其他范例的DBMS 的原生支撑)
5.2 特性
(1)高速的竖立索引(在现代CPU上,峰值机能可到达10 MB/秒);
(2)高机能的搜刮(在2 – 4GB 的文本数据上,均匀每次检索相应时候小于0.1秒);
(3)可处置惩罚海量数据(现在已知可以或许处置惩罚凌驾100 GB的文本数据, 在单一CPU的体系上可 处置惩罚100 M 文档);
(4)供应了优异的相干度算法,基于短语类似度和统计(BM25)的复合Ranking要领;
(5)支撑分布式搜刮;
(6)支撑短语搜刮
(7)供应文档择要天生
(8)可作为MySQL的存储引擎供应搜刮效劳;
(9)支撑布尔、短语、词语类似度等多种检索形式;
(10)文档支撑多个全文检索字段(最大不凌驾32个);
(11)文档支撑多个分外的属性信息(比方:分组信息,时候戳等);
(12)支撑断词;
6. Katta
6.1 简介
基于 Lucene 的,支撑分布式,可扩大,具有容错功用,准及时的搜刮计划。
6.2 长处
开箱即用,可以或许与 Hadoop 合营完成分布式。具有扩大和容错机制。
6.3 瑕玷
只是搜刮计划,建索引局部照样须要自身完成。在搜刮功用上,只完成了最基本的需求。胜利案例较少,项目的成熟度稍微差一些。由于须要支撑分布式,关于一些庞杂的查询需求,定制的难度会对照大。
三、参考文章
- https://blog.csdn.net/belalds/article/details/82686387
- https://blog.csdn.net/peng_0129/article/details/86150438
- https://www.cnblogs.com/panxuejun/p/5952681.html
Comment here is closed