Solr 6.0 学习(七) solr创建索引原理

原创 2016年06月03日 14:09:51

关键点:倒排索引

参考文章: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。


版权声明:本文为博主原创文章,未经博主允许不得转载。

solr全文检索实现原理

solr那是我1年前使用到的一个搜索引擎,由于当初对于配置了相应了,但是今天突然面试问到了,哎,太久了,真的忘记了,今天特地写一篇博客记下来 solr是一个独立的企业级搜索应用服务器,它对外t提供类...
  • u014209975
  • u014209975
  • 2016年11月21日 20:33
  • 10230

SolrCloud原理

本文为调研分布式检索系统的笔记整理,之前调研sphinx和coreseek的时候,发现国内的博客,还是讲怎么配置怎么安装多,原理性的东西并不多。本文为:官网文档阅读笔记(有些会附带上文档英文原文, 如...
  • u011026968
  • u011026968
  • 2015年12月17日 01:57
  • 5442

Solr 6.0 学习(七) solr创建索引原理

关键点:倒排索引 参考文章:http://blog.csdn.net/chunlei_zhang/article/details/38520315 作为搜索,我们传统的方式(正排索引)是从关键点出...
  • upxiaofeng
  • upxiaofeng
  • 2016年06月03日 14:09
  • 2723

Solr--全文索引原理

什么是全文搜索 倒排索引结构 正排索引 倒排索引    在一些大型的门户网站和电商网站中,都有自己的站内搜索,但是使用传统的数据库查询方式已经无法满足一些高级的搜索要求,比如说:搜索速度要快、搜索结果...
  • u010853701
  • u010853701
  • 2016年08月06日 21:12
  • 2255

分布式_solr全文检索实现原理

solr全文检索实现原理   Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成...
  • qq_33456887
  • qq_33456887
  • 2018年01月09日 09:19
  • 64

Solr分布式索引SolrCloud原理总结

……
  • threeidiots
  • threeidiots
  • 2014年11月20日 18:52
  • 4311

Solr索引建立

solr在传统数据库上建立索引的机制: 与mysql,oracle数据库联合使用的方式:网上很多资料,可以在网上参考相关资料进行学习。 主要有实时索引,全量索引,增量索引,定时索引 方法: 修...
  • nma_123456
  • nma_123456
  • 2015年10月13日 21:22
  • 1005

转:solr 从数据库导入数据,全量索引和增量索引(实例&配置&原理)

http://blog.csdn.net/u013378306/article/details/50761610 为防止原文删除特此备份 --------------------————————...
  • zhanghongzheng3213
  • zhanghongzheng3213
  • 2017年04月28日 09:21
  • 1062

跟我学solr---在solr admin中添加索引

这一章为大家介绍如何在solr admin中,通过浏览器向solr添加索引 一.添加xml格式的文档 进入solr admin后,点击Documents,选择Documentation T...
  • hechenghai
  • hechenghai
  • 2015年09月25日 14:40
  • 5704

全文索引----创建多表solr索引

我们在使用solr作为索引服务器时,通常会将多个表的字段作为联合索引,对多个表之间快速的数据查询也是solr服务器高效率的体现,这篇文章将介绍如何基于多个数据表创建索引:一:没有关联的数据表之间创建索...
  • erhei0317
  • erhei0317
  • 2016年09月24日 21:38
  • 2125
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Solr 6.0 学习(七) solr创建索引原理
举报原因:
原因补充:

(最多只允许输入30个字)