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

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

开发者学堂课程【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 底层封装的算法,加快查询速度的使用方法是:它会在查询前会将查询的内容提取出来组成文档(正文),对文档进行切分词组成索引(目录),索引和文档有关联关系,查询的时候会查询索引,通过索引找文档的这个过程叫做全文索引。切分词就是把一句话切分成一个一个的词。

 

相关文章
|
5月前
|
机器学习/深度学习 算法 BI
机器学习笔记(一) 感知机算法 之 原理篇
机器学习笔记(一) 感知机算法 之 原理篇
|
6月前
|
人工智能 算法 C++
c++算法学习笔记 (17) 质数
c++算法学习笔记 (17) 质数
|
6月前
|
算法 C++
c++算法学习笔记 (15) 单调栈与单调队列
c++算法学习笔记 (15) 单调栈与单调队列
|
6月前
|
算法 C++
c++算法学习笔记 (13) 链表
c++算法学习笔记 (13) 链表
|
6月前
|
人工智能 算法 C++
c++算法学习笔记 (18) 约数
c++算法学习笔记 (18) 约数
|
6月前
|
算法 C++
c++算法学习笔记 (16) 并查集
c++算法学习笔记 (16) 并查集
|
6月前
|
算法 C++
c++算法学习笔记 (21) STL
c++算法学习笔记 (21) STL
|
6月前
|
算法 C++
c++算法学习笔记 (20) 哈希表
c++算法学习笔记 (20) 哈希表
|
6月前
|
算法 C++
c++算法学习笔记 (19) 堆
c++算法学习笔记 (19) 堆
|
6月前
|
算法 C++
c++算法学习笔记 (14) 栈与队列
c++算法学习笔记 (14) 栈与队列