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