常用查询算法(顺序扫描法)|学习笔记

简介: 快速学习常用查询算法(顺序扫描法)

开发者学堂课程【Lucene 知识精讲与实战(上) 常用查询算法(顺序扫描法)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/700/detail/12323


常用查询算法(顺序扫描法)


内容介绍:

一、顺序扫描法的概念

二、顺序扫描法的局限性

三、顺序扫描法的优缺点

四、倒排索引的初认识

 

一、顺序扫描法的概念

概念:所谓顺序扫描,例如要找内容包含一个字符串的文件,就是一个文档接着一个文档的看,对于每一个文档,从头看到尾,如果看到此文档包含此字符,则此文档为我们要找的文件,接着看下一个文件,知道扫描所有的文件。

是 Lucene 算法底层封装的一种算法,也是 Lucene 查询很快的原因。

如果要查询一篇文章,一条数据等等,使用关键字到被查询的文章或数据库当中,然后逐行逐字地去跟关键字对比,直到文章或数据结束。


二、顺序扫描法的局限性

如果要查询的是一张表,从第一条数据开始查询,一直查到表格的最后一条数据才完成,在数据量小的时候执行这个算法它是没什么影响的,如果有个几千几万条十几万条,用“like”模糊查询的时候速度都没有明显感觉到慢,如果遇到海量数据,上亿条等大数据量来计算的时候,速度会非常的慢。


三、顺序扫描法的优缺点

1、优点:查询准确率高。

2、缺点:查询速度会随着查询数据量的增大,越来越慢,没有最慢,只有更慢。

3、使用场景:

数据库中的like关键字模糊查询:使用数据库“like”关键字查询的时候,如果大家对于mySQL数据库有一些了解的话都会知道,在被查的关键字加上索引是会失效的,原因是使用“like”关键字查询会触发前表缓慢,从第一条数据开始,一直查询到最后一条,速度是非常慢的。

文本编译器的 Ctrl+F 查询功能:如果我们要查询的是一篇文本文档,一般文本编译器当中按 Ctrl+F 都有搜索的功能,这种功能使用的也是顺序扫描法。

相当于一本字典把目录撕了,只有正文内容,要从正文内容当中要查一个字或一个词,只能从第一页一直查到最后一页,才能找到想要的字或词,准确率是很高的,随着字典的厚度越来越厚,页数越多,查询速度也就越慢。


四、倒排索引的初认识

倒排索引是 Lucene 底层封装的算法,加快查询速度的使用方法是:它会在查询前会将查询的内容提取出来组成文档(正文),对文档进行切分词组成索引(目录),索引和文档有关联关系,查询的时候会查询索引,通过索引找文档的这个过程叫做全文索引。切分词就是把一句话切分成一个一个的词。

 

相关文章
|
2月前
|
存储 机器学习/深度学习 监控
网络管理监控软件的 C# 区间树性能阈值查询算法
针对网络管理监控软件的高效区间查询需求,本文提出基于区间树的优化方案。传统线性遍历效率低,10万条数据查询超800ms,难以满足实时性要求。区间树以平衡二叉搜索树结构,结合节点最大值剪枝策略,将查询复杂度从O(N)降至O(logN+K),显著提升性能。通过C#实现,支持按指标类型分组建树、增量插入与多维度联合查询,在10万记录下查询耗时仅约2.8ms,内存占用降低35%。测试表明,该方案有效解决高负载场景下的响应延迟问题,助力管理员快速定位异常设备,提升运维效率与系统稳定性。
225 4
|
机器学习/深度学习 算法 BI
机器学习笔记(一) 感知机算法 之 原理篇
机器学习笔记(一) 感知机算法 之 原理篇
|
人工智能 算法 C++
c++算法学习笔记 (17) 质数
c++算法学习笔记 (17) 质数
|
算法 C++
c++算法学习笔记 (15) 单调栈与单调队列
c++算法学习笔记 (15) 单调栈与单调队列
|
人工智能 算法 C++
c++算法学习笔记 (18) 约数
c++算法学习笔记 (18) 约数
|
算法 C++
c++算法学习笔记 (16) 并查集
c++算法学习笔记 (16) 并查集
|
算法 C++
c++算法学习笔记 (21) STL
c++算法学习笔记 (21) STL
|
算法 C++
c++算法学习笔记 (20) 哈希表
c++算法学习笔记 (20) 哈希表
|
算法 C++
c++算法学习笔记 (19) 堆
c++算法学习笔记 (19) 堆
|
算法 C++
c++算法学习笔记 (14) 栈与队列
c++算法学习笔记 (14) 栈与队列

热门文章

最新文章