开发者学堂课程【Lucene 知识精讲与实战(上): 常用查询算法(倒排索引算法)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/700/detail/12324
常用查询算法(倒排索引算法)
内容介绍:
一、倒排索引算法描述
二、倒排索引算法比顺序扫描快的原因
三.倒排索引算法的好处与不足
一、倒排索引算法描述
算法的描述:查询前会先将查询的内容提取出来组成文档(正文),对文档进行切分次索引(目录),索引和文档有关联关系,查询的时候先查询索引,通过索引找文档的这个过程叫做全文检索。这种算法叫做全文检索算法,也叫做倒排索引算法。
切分词:就是将一句一句话切分成一个一个的词,去掉停用词(的,地,得,a,an,the 等)。去掉空格,去掉标点符号,大写字母转换小写字母,去掉重复的词。
这样的速度就比较快,比如分为目录和正文查询,通过目录,看这个拼音或者部首来看这个字在第几页,通过这个第几页翻到那页,直接找到那个字,这个就是运用了字典的原理来完成的。
二、倒排索引算法比顺序扫描快的原因
理解:因为索引可以去掉重复的词,汉语常用的字和词大概等于字典加词典,常用的英文在牛津词典也有收录,如果用计算机的查询速度,字典+词典+牛津词典这些内容是非常快的,但是用这些字典,词典组成的文章确是千千万万不计其数,索引的大小最多也就是字典+词典,所以通过查询索引,再通过索引和文档的关联关系找到文档速度比较快,顺序扫描则是直接去逐个查询那些不计其数的文章就算是计算的速度也会很慢。
三.倒排索引算法的好处与不足
1.优点
查询准确率高;
查询速度快,并且不会因为查询内容量的增加,而使查询速度逐渐变慢。
2.时间与空间的概念
对于时间与空间的概念,时间就是从程序开始执行到程序结束这段时间,当然是越短越好,从时间可以看出执行速度是不是高效的,空间指的是代码要合理,要简短而有效,代码会占用一定的磁盘空间来进行存储,存储会占用地方,占用量是越少越好,在编译当中时间可以转换为空间,空间也可以转换为时间,倒排索引算法是用空间来换成时间,原因是在这个算法中要把这个文档(查询的数据)提取出来,要组成正文内容,和索引,占用了磁盘的空间,但是查询速度却变快了,所以说用空间来换时间。
3.缺点
索引文件会占用额外的磁盘空间,也就是占用磁盘量会增大。
4、使用场景:
海量数据查询。