一、应该叫反向索引,古人的翻译真是一言难尽。
英文原名Inverted index,大概因为 Invert 有颠倒的意思,就被翻译成了倒排。但是倒排这个名称很容易让人理解为从A-Z颠倒成Z-A。
简单来说(不是很精确)就是mysql的普通字段的索引。不同的是,还要把文档里的每一个词拆出来做主键,指向所有包含这个词的文档。
二、mysql辅助理解(不是很准确,但是有助于理解)
正向索引:相当于mysql的每行的id的索引
反向索引:相当于mysql的每行的其它字段的索引
一个未经处理的数据库中,一般是以文档ID作为索引,以文档内容作为记录。
而Inverted index 指的是将单词或记录作为索引,将文档ID作为记录,这样便可以方便地通过单词或记录查找到其所在的文档。
三、优势
四、创建倒排索引,分为以下几步:
1)创建“文档”列表:
l lucene首先对原始文档数据进行编号(DocID),形成列表,就是一个文档列表
2)创建“倒排索引”列表
l 然后对文档中数据进行分词,得到词条。对词条进行编号,以词条创建索引。然后记录下包含该词条的所有文档编号(及其它信息)。
谷歌之父--> 谷歌、之父
五、理论
倒排索引创建索引的流程:
1) 首先把所有的原始数据进行编号,形成文档列表
2) 把文档数据进行分词,得到很多的词条,以词条为索引。保存包含这些词条的文档的编号信息。
搜索的过程:
当用户输入任意的词条时,首先对用户输入的数据进行分词,得到用户要搜索的所有词条,然后拿着这些词条去倒排索引列表中进行匹配。找到这些词条就能找到包含这些词条的所有文档的编号。
然后根据这些编号去文档列表中找到文档