摘要:
一、索引压缩概述使用压缩的目的:(1)因为我们想要把尽量多的数据放入内存,因此压缩能够达到这个目的;(2)从磁盘到内存的传输时间会缩短;压缩分类:(1)无损压缩:压缩后的数据能还原全部信息;(2)有损压缩:压缩后会丢失一些信息;如果有损压缩后丢失的信息用户并不关心,则有损压缩也是可以接受的;二、Heaps定律通过整个文档集词条数来估计词项数目;主要思想:随着文档集增加,词项数目会增加,并且没有上限;M=kT^b;三、Zipf定律通过词项在文档集中的词频排名来估计词项之间的词频比例;如果词项A出现次数排名第一,词项B出现次数排名第二,词项C出现次数排名第三,则A出现次数是B出现次数的两倍,则A出 阅读全文
摘要:
一、索引构建影响因素索引构建是指一篇文档转换成倒排索引的整个过程;(1)需要考虑的因素有内存大小、CPU时钟频率等;比如如果内存特别大,则能够把全部的文档都放入内存,并很快就能构建成倒排索引;(2)我们需要把尽可能多的内容放在内存;(3)需要考虑寻道时间,因此必须要把连续读取的数据放在连续的块中;将文档集变成term-->docID后,词项-文档ID对的数目是token的数目;二、BSBI我们这里考虑的是大文档集(不能把全部的文档都放入内存)。顾名思义,BSBI(Block Sorted-Based Indexing)是基于块排序的;操作流程如下:(1)把整个文档集分成大小相同的部分(每 阅读全文
摘要:
一、Hash Table和Search Tree实现dictionary的方法主要有哈希表和搜索树(二叉树、B树、AVL树);实现哈希表的dictionary的优点:(1)查询效率O(1);缺点:(1)哈希冲突。(2)不支持模糊查询。(3)哈希函数需要不断变化以适应需求。实现搜索树的dictionary的优点:(1)支持模糊查询。缺点:(1)查询效率相对较慢。(2)树要保持平衡。二、单个通配符查询1.尾通配符查询比如abc*,即通配符出现在尾部的查询就是尾通配符查询,这种查询使用搜索树可以完成,方法就是以a,b,c的顺序遍历树。如下图所示:如果要查询ab*,则(1)比较根节点:因为a在a-m中 阅读全文
摘要:
建立倒排记录表之前一、文件的编码一般一个文件都是以字节的方式存储的,如果想要让其可读,就必须要通过正确的编码方式转换成字符;就像Java IO一样,如果没有通过正确的编码方式打开一个文件,会出现乱码。因此在一系列处理步骤之前,知道文档的编码是重要的。一般在文档的meta data部分都会保存编码方式。二、索引粒度索引粒度的选取也是很重要的。因为如果把索引粒度选的太大,比如你想找Information Retrieval,如果索引粒度为整本书,则只要出现Information和Retrieval的书都会被选中,这非常不精确。三、Tokenization词条化:这个方法就像Java中StringT 阅读全文
摘要:
一、信息检索概念信息检索是从大量非结构化的文档集中找到用户需要的信息;当然信息检索远不止这些,比如从包中拿出信用卡并查看卡号,在计算机中查找文件等;非结构化:数据没有清晰的语义结构,计算机不容易处理;严格的非结构化数据是不存在的,比如文本虽然属于非结构化,但是文本也有固定的格式,如标题等;半结构化数据:处在结构化和非结构化之中的信息;分类:给定类别,将文档进行指派给特定的类别;一般都是有训练集和测试集;聚类:将给定的文档集进行自动聚团并分开,即预先不指定类别;grep是Unix中查询的命令;语料库(corpus)=Collection;ad-hoc检索:文档集相对静止,用户需求不断变化且是一次 阅读全文