码迷,mamicode.com
首页 > 其他好文 > 详细

solr中文搜索倒排索引和数据存储结构

时间:2014-08-14 23:53:26      阅读:944      评论:0      收藏:0      [点我收藏+]

标签:solr中文搜索倒排索引和数据存储结构

作为搜索,我们传统的方式(正排索引)是从关键点出发,然后再通过关键点找到关键点代表的信息中能够满足搜索条件的特定信息,既通过KEY寻找VALUE。而Lucene的搜索则是采用了倒排索引的方式,即通过VALUE找KEY。而在中文全文搜索中VALUE就是我们要搜索的单词,存放所有单词的地方叫词典。KEY是文档标号列表(通过文档标号列表我们可以找到出现过要搜索单词VALUE的文档)。正排索引从文档编号找词:

bubuko.com,布布扣

倒排索引是从词找文档编号:

bubuko.com,布布扣

当文档数据来临时,solr会首先对文档数据进行分词,创建索引库和文档数据库。所谓的分词是指:将一段字符文本按照一定的规则分成若干个单词。如下面两篇文档通过solr后如何产生分词存储:

bubuko.com,布布扣

文章中的标点符号可以直接过滤掉,像and、too可以直接过滤掉。形成的分词表表示:

bubuko.com,布布扣

Lucene的倒排索引存储结构为:词项的字符串+词项的文档频率+记录词项的频率信息+记录词项的位置信息+跳跃偏移量。简单的理解可以形成以下结构:

bubuko.com,布布扣

分别表示词,词出现的文档编号,文档中出现的频率和文档中出现的位置。这样当我们对词进行搜索时,会找到该词出现过的所有文档的ID,然后再通过该文档的ID寻找文档的具体内容。







solr中文搜索倒排索引和数据存储结构,布布扣,bubuko.com

solr中文搜索倒排索引和数据存储结构

标签:solr中文搜索倒排索引和数据存储结构

原文地址:http://blog.csdn.net/chunlei_zhang/article/details/38520315

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!