凡是数据库中,索引的存在就是为了提高查询速度的,数据库的索引有点类似于书本上面的目录的概念,因为在英文中都是index,事实上也就是目录。其算法应该叫做“倒排索引”,这个其实也类似于搜索引擎里面的基本算法。测试:10w条数据,没有索引的情况下,查询一条数据大约需要550ms以上。建立索引后,数据库的...
分类:
数据库 时间:
2014-10-10 14:18:14
阅读次数:
342
文章转自:http://blog.csdn.net/hguisu/article/details/7962350搜索引擎的索引1.单词——文档矩阵 单词-文档矩阵是表达两者之间所具有的一种包含关系的概念模型,图3-1展示了其含义。图3-1的每列代表一个文档,每行代表一个单词,打对勾的位置代表包含关系...
分类:
其他好文 时间:
2014-09-30 13:23:19
阅读次数:
203
文章转自:http://blog.csdn.net/hguisu/article/details/79697571.概述 在关系数据库系统里,索引是检索数据最有效率的方式,。但对于搜索引起,他它并不能满足其特殊要求:1)海量数据:搜索引擎面对的是海量数据,像Google,百度这样大型的商业搜索引擎索...
分类:
其他好文 时间:
2014-09-30 13:05:49
阅读次数:
254
在前面一篇介绍 倒排索引 的文章中我们知道, 两个关键字的合并操作的时候复杂度是θ(N), 如果在合并操作时遇到最极端的情况, 所扫描和比较的次数是两个列表集合的所有元素个数之和, 即是线性增长的, 这在数据量特别大的时候是很低效的. 我们还是看一下两个集合的合并操作代码示例:a = [1, 2, ...
分类:
其他好文 时间:
2014-09-23 01:56:13
阅读次数:
267
1.前言 学习hadoop的童鞋,倒排索引这个算法还是挺重要的。这是以后展开工作的基础。首先,我们来认识下什么是倒排索引: 倒排索引简单地就是:根据单词,返回它在哪个文件中出现过,而且频率是多少的结果。这就像百度里的搜索,你输入一个关键字,那么百度引擎就迅速的在它的服务器里找到有该关键字...
分类:
其他好文 时间:
2014-09-17 11:41:02
阅读次数:
267
我们来看最复杂的部分,就是Term Dictionary和Term Index文件,Term Dictionary文件的后缀名为tim,Term Index文件的后缀名是tip,格式如图所示。Term Dictionary文件首先是一个Header,接下来是PostingsHeader,这两个的格式...
分类:
其他好文 时间:
2014-08-29 22:31:38
阅读次数:
378
1. 定长编码最容易想到的方式就是常用的普通二进制编码,每个数值占用的长度相同,都占用最大的数值所占用的位数,如图所示。这里有一个文档ID列表,254,507,756,1007,如果按照二进制定长编码,需要按照最大值1007所占用的位数10位进行编码,每个数字都占用10位。和词典的格式设计中顺序列表...
分类:
其他好文 时间:
2014-08-29 12:51:27
阅读次数:
298
词典的格式设计词典中所保存的信息主要是三部分:Term字符串Term的统计信息,比如文档频率(Document Frequency)倒排表的位置信息其中Term字符串如何保存是一个很大的问题,根据上一章基本原理的表述中,我们知道,写入文件的Term是按照字典顺序排好序的,那么如何将这些排好序的Ter...
分类:
其他好文 时间:
2014-08-28 11:21:39
阅读次数:
404
前言 搞检索的,应该多少都会了解Lucene一些,它开源而且简单上手,官方API足够编写些小DEMO。并且根据倒排索引,实现快速检索。本文就简单的实现增量添加索引,删除索引,通过关键字查询,以及更新索引等操作。 目前博猪使用的不爽的地方就是,读取文件内容进行全文检索时,需要自己编写读取过程(这个.....
分类:
其他好文 时间:
2014-08-27 21:46:38
阅读次数:
348