全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

Lucene/ ElasticSearch这类的搜索引擎和SQL数据库里的查询/全文检索有什么区别?

发布时间:2023-10-13 12:17:32
发布人:xqq

一、Lucene/ ElasticSearch这类的搜索引擎和SQL数据库里的查询/全文检索的区别

es也可以理解成是一种数据库,不仅能提供全文检索功能,还可以支持各种数值类的区间查询,聚合计算等,这些和传统数据库一样,从使用场景来说,数据库一般用来存meta,比如网站用户,用户资源等等,这些数据有个特点就是量不会很大,还有就是这些数据一般都比较结构化。

es一般用来存一些流式数据,比如应用日志,这也是目前es应用最广的方面,这些数据有个特点就是往往结构不固定,比如应用日志,不同的程序员写得模块打出来的日志字段数量都不一样,这种数据就不太方便用数据库来处理。

最后,一般传统数据库,全文检索都实现的很鸡肋,因为一般也没人用数据库存文本字段。

上面从使用场景上说明了两者的区别,从技术上两者全文检索的实现都差不多,无非是倒排索引,但是lucene毕竟是专业的,做了十几年了,索引效率,存储空间等都比传统数据库快很多,技术也迭代的非常快。

延伸阅读:

二、 Lucene是什么

Lucene是Apache基金会jakarta项目组的一个子项目;Lucene是一个开放源码的全文检索引擎工具包,提供了完整的查询引擎和索引引擎,部分语种文本分析引擎;Lucene并不是一个完整的全文检索引擎,仅提供了全文检索引擎架构,但仍可以作为一个工具包结合各类插件为项目提供部分高性能的全文检索功能;现在常用的ElasticSearch、Solr等全文搜索引擎均是基于Lucene实现的。

索引的生成分为两个部分:

1)创建阶段:

添加文档阶段,通过IndexWriter调用addDocument方法生成正向索引文件;文档添加后,通过flush或merge操作生成倒排索引文件。

2) 搜索阶段:

用户通过查询语句向Lucene发送查询请求;通过IndexSearch下的IndexReader读取索引库内容,获取文档索引;得到搜索结果后,基于搜索算法对结果进行排序后返回。
#it技术干货

相关文章

数据库设计时保持单个表的独立性,但是表之间没有主外键强制的约束,这样设计的利弊是什么?

数据库设计时保持单个表的独立性,但是表之间没有主外键强制的约束,这样设计的利弊是什么?

2023-10-13
PC端网站,手机版网站,APP,三者可以实现共用同一数据库,能同步更新吗?

PC端网站,手机版网站,APP,三者可以实现共用同一数据库,能同步更新吗?

2023-10-13
visual studio code里怎么建一个数据库SQL server?

visual studio code里怎么建一个数据库SQL server?

2023-10-13
oracle中如果查询结果为空则执行另外一条查询,或者换一个查询条件语句怎么写?

oracle中如果查询结果为空则执行另外一条查询,或者换一个查询条件语句怎么写?

2023-10-13

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取