Solr 6.0 学习(七) solr创建索引原理
2016-06-03 14:09
260 查看
关键点:倒排索引
参考文章:http://blog.csdn.net/chunlei_zhang/article/details/38520315
作为搜索,我们传统的方式(正排索引)是从关键点出发,然后再通过关键点找到关键点代表的信息中能够满足搜索条件的特定信息,既通过KEY寻找VALUE。而Lucene的搜索则是采用了倒排索引的方式,即通过VALUE找KEY。而在中文全文搜索中VALUE就是我们要搜索的单词,存放所有单词的地方叫词典。KEY是文档标号列表(通过文档标号列表我们可以找到出现过要搜索单词VALUE的文档)。 正排索引从文档编号找词:
倒排索引是从词找文档编号:
当文档数据来临时,solr会首先对文档数据进行分词,创建索引库和文档数据库。所谓的分词是指:将一段字符文本按照一定的规则分成若干个单词。如下面两篇文档通过solr后如何产生分词存储:
文章中的标点符号可以直接过滤掉,像and、too可以直接过滤掉。形成的分词表表示:
Lucene的倒排索引存储结构为: 词项的字符串+词项的文档频率+记录词项的频率信息+记录词项的位置信息+跳跃偏移量 。简单的理解可以形成以下结构:
分别表示词,词出现的文档编号,文档中出现的频率和文档中出现的位置。这样当我们对词进行搜索时,会找到该词出现过的所有文档的ID,然后再通过该文档的ID寻找文档的具体内容。
当然,Lucene词典中词的顺序是按照英文字母的顺序排列的,这样就可以采用压缩存储:假设有term,termagancy,termagant,termina四个词。每个字母需要1byte的空间,常规存储一共需要35byte。而压缩存储之后为:"term4agancy8t4inal",一共需要22byte,节省大量的空间。
这里有另外一篇文章介绍了更多关于solr全文索引的原理:http://www.importnew.com/12707.html
下面附上个人理解的倒排索引:
在solr中如果要搜索 word1 那么就出 返回 doc1 和 doc2 如果 搜索 word1 和 word3 那么就会做一个交叉,返回doc2。
参考文章:http://blog.csdn.net/chunlei_zhang/article/details/38520315
作为搜索,我们传统的方式(正排索引)是从关键点出发,然后再通过关键点找到关键点代表的信息中能够满足搜索条件的特定信息,既通过KEY寻找VALUE。而Lucene的搜索则是采用了倒排索引的方式,即通过VALUE找KEY。而在中文全文搜索中VALUE就是我们要搜索的单词,存放所有单词的地方叫词典。KEY是文档标号列表(通过文档标号列表我们可以找到出现过要搜索单词VALUE的文档)。 正排索引从文档编号找词:
倒排索引是从词找文档编号:
当文档数据来临时,solr会首先对文档数据进行分词,创建索引库和文档数据库。所谓的分词是指:将一段字符文本按照一定的规则分成若干个单词。如下面两篇文档通过solr后如何产生分词存储:
文章中的标点符号可以直接过滤掉,像and、too可以直接过滤掉。形成的分词表表示:
Lucene的倒排索引存储结构为: 词项的字符串+词项的文档频率+记录词项的频率信息+记录词项的位置信息+跳跃偏移量 。简单的理解可以形成以下结构:
分别表示词,词出现的文档编号,文档中出现的频率和文档中出现的位置。这样当我们对词进行搜索时,会找到该词出现过的所有文档的ID,然后再通过该文档的ID寻找文档的具体内容。
当然,Lucene词典中词的顺序是按照英文字母的顺序排列的,这样就可以采用压缩存储:假设有term,termagancy,termagant,termina四个词。每个字母需要1byte的空间,常规存储一共需要35byte。而压缩存储之后为:"term4agancy8t4inal",一共需要22byte,节省大量的空间。
这里有另外一篇文章介绍了更多关于solr全文索引的原理:http://www.importnew.com/12707.html
下面附上个人理解的倒排索引:
在solr中如果要搜索 word1 那么就出 返回 doc1 和 doc2 如果 搜索 word1 和 word3 那么就会做一个交叉,返回doc2。
相关文章推荐
- PostgreSQL教程(八):索引详解
- Oracle外键不加索引引起死锁示例
- oracle 索引的相关介绍(创建、简介、技巧、怎样查看) .
- 用SQL建立索引的方法步骤
- SQL2005重新生成索引的的存储过程 sp_rebuild
- SQL效率提升之一些SQL编写建议并有效利用索引
- SQLSERVER的非聚集索引结构深度理解
- SQL Server误区30日谈 第8天 有关对索引进行在线操作的误区
- SQL Server 索引介绍
- SqlServer 索引自动优化工具
- mysql 中存在null和空时创建唯一索引的方法
- 详解sqlserver查询表索引
- 优化 SQL Server 索引的小技巧
- sqlserver 索引的一些总结
- MySQL下使用Inplace和Online方式创建索引的教程
- mysql中索引使用不当速度比没加索引还慢的测试
- Sql Server 查询性能优化之走出索引的误区分析
- sqlserver索引的原理及索引建立的注意事项小结
- 使用Sphinx对索引进行搜索
- 关于Sphinx创建全文检索的索引介绍