倒排索引原理

这里介绍一个基础的搜索引擎技术

假如有两段文字

1,books and friends should be few but good

2,A good book is a good friend

假如我们忽略掉大小写和复数,可以整理出一张单词表,显示哪个单词再哪段文字,

英文单词 文章编号
a 2
and 1
be 1
book 1,2

有了这样一张表,就可以短时间内根据给定单词找到对应的文章。由于单词是有序的,查找效率很高,

索引的通用结构是:

次关键码:例如上面的英文单词

记录号表,例如上面的文章编号

其中记录号表存贮具有相同次关键字的所有记录的记录号

时间: 2024-12-22 20:05:23

倒排索引原理的相关文章

Lucene 4.X 倒排索引原理与实现: (3) Term Dictionary和Index文件

我们来看最复杂的部分,就是Term Dictionary和Term Index文件,Term Dictionary文件的后缀名为tim,Term Index文件的后缀名是tip,格式如图所示. Term Dictionary文件首先是一个Header,接下来是PostingsHeader,这两个的格式一致,但是保存的是不同的信息.SkipInterval是跳跃表的跳的幅度,MaxSkipLevels是跳跃表的层数,SkipMinimun是应用跳跃表的最小倒排表长度,接下来就是Term的部分了.

Lucene 4.X 倒排索引原理与实现: (1) 词典的设计

词典的格式设计 词典中所保存的信息主要是三部分: Term字符串 Term的统计信息,比如文档频率(Document Frequency) 倒排表的位置信息 其中Term字符串如何保存是一个很大的问题,根据上一章基本原理的表述中,我们知道,写入文件的Term是按照字典顺序排好序的,那么如何将这些排好序的Term保存起来呢? 1. 顺序列表式 一个直观的想法就是顺序列表的方式,即每个Term都占用相同的空间,然后大家依次排列下来,如图所示: 这种方式查找起来也很方便,由于Term是排好序的,而且每

Lucene 4.X 倒排索引原理与实现: (2) 倒排表的格式设计

1. 定长编码 最容易想到的方式就是常用的普通二进制编码,每个数值占用的长度相同,都占用最大的数值所占用的位数,如图所示. 这里有一个文档ID列表,254,507,756,1007,如果按照二进制定长编码,需要按照最大值1007所占用的位数10位进行编码,每个数字都占用10位. 和词典的格式设计中顺序列表方式遇到的问题一样,首先的问题就是空间的浪费,本来254这个数值8位就能表示,非得也用上10位.另外一个问题是随着索引文档的增多,谁也不知道最长需要多少位才够用. 2. 差值(D-gap)编码

Lucene 工作原理 之倒排索引

1.简介 倒排索引源于实际应用中需要根据属性的值来查找记录.这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址.由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index).带有倒排索引的文件我们称为倒排索引文件,简称倒排文件(inverted file). 倒排文件(倒排索引),索引对象是文档或者文档集合中的单词等,用来存储这些单词在一个文档或者一组文档中的存储位置,是对文档或者文档集合的一种最常用的索引机制. 搜索引擎的关键步骤就是

第三百六十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—倒排索引

第三百六十一节,Python分布式爬虫打造搜索引擎Scrapy精讲-倒排索引 倒排索引 倒排索引源于实际应用中需要根据属性的值来查找记录.这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址.由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index).带有倒排索引的文件我们称为倒排索引文件,简称倒排文件(inverted file). 倒排索引原理 就是将一句话进行分词并记录分词所存在的文章,当用户搜索词时可以直接查找到当前词所存在的文

倒排索引C++实现

倒排索引原理:根据属性的值来查找记录位置. 假设有3篇文章,file1, file2, file3,文件内容如下: file1 (单词1,单词2,单词3,单词4....) file2 (单词a,单词b,单词c,单词d....) file3 (单词1,单词a,单词3,单词d....) 那么建立的倒排索引就是这个样子: 单词1 (file1,file3) 单词2 (file1) 单词3 (file1,file3) 单词a (file2, file3) ... 下面是我对于倒排索引的一个简单的实现.该

四十 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)倒排索引

倒排索引 倒排索引源于实际应用中需要根据属性的值来查找记录.这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址.由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index).带有倒排索引的文件我们称为倒排索引文件,简称倒排文件(inverted file). 倒排索引原理 就是将一句话进行分词并记录分词所存在的文章,当用户搜索词时可以直接查找到当前词所存在的文章 倒排索引分词权重记录(词瓶)  分词权重记录,是通过(TF-IDF)来实现

阿里面试题解答-倒排索引

倒排索引原理? elasticsearch 倒排索引原理 - 知乎 倒排索引就是通过值去找文件 term dictionary:如果后面的 term 比较多,例如 18 岁的有好几万人.需要提高查询效率,因此产生了 term dictionary,就是吧所有的 term 做一下排序,然后使用二分查找,logN次 访问磁盘 term index:每次访问磁盘太慢了,需要放到内存里,可以整个 term dictionary 太大了,只能放一部分.所以出现了这个 Term Index,它其实是一个 T

Lucene 4.X 全套教程

http://www.cnblogs.com/forfuture1978/category/300665.html Lucene 4.X 倒排索引原理与实现: (3) Term Dictionary和Index文件 (FST详细解析) 摘要: 我们来看最复杂的部分,就是Term Dictionary和Term Index文件,Term Dictionary文件的后缀名为tim,Term Index文件的后缀名是tip,格式如图所示.Term Dictionary文件首先是一个Header,接下来