最近学习了es的视频,感觉这个产品对于查询来说非常方便,但是如何应用到我们自己的产品中来呢。因为我们的产品数据更新太快,其实不太适合用es做主力存储。并且我们的业务还没有到那种巨量级别,产品的服务器容量也有限,所以我打算根据es的倒排索引的原理,自己写一个查询的组件。我的理解是这样的,有大量的文字需要进行模糊查询,在mysql中,如果使用like的话是非常合适的,目前我就是采用这种方式查询的,因为数据量还未到千万级别,速度也还行,不过马上要突破了,所以要考虑优化的事情了。所以我的思路是这样的:1首先将数据库中的大段文字和标题都提取出来。2这些文字都对应了主键。3使用jcseg分词将一段文字进行
2、倒排索引的数据结构倒排索引其实包含了三种数据,分别是倒排表(PostingList)词项字典(TermDictionary)词项索引(TermIndex)这几种文件分别存储了不同的数据其中倒排表包含某个词项的所有id的数据存储了在.doc文件中;词项字典包含了indexfield的所有经过normalizationtokenfilters处理之后的词项数据,最终存储在.tim文件中。所谓normalization其实是一个如去重、时态统一、大小写统一、近义词处理等类似的相关操作;词项索引就是为了加速词项字典检索的一种数据结构,落地文件为.tip。.tip文件和.tim文件的数据结构如下图所
2、倒排索引的数据结构倒排索引其实包含了三种数据,分别是倒排表(PostingList)词项字典(TermDictionary)词项索引(TermIndex)这几种文件分别存储了不同的数据其中倒排表包含某个词项的所有id的数据存储了在.doc文件中;词项字典包含了indexfield的所有经过normalizationtokenfilters处理之后的词项数据,最终存储在.tim文件中。所谓normalization其实是一个如去重、时态统一、大小写统一、近义词处理等类似的相关操作;词项索引就是为了加速词项字典检索的一种数据结构,落地文件为.tip。.tip文件和.tim文件的数据结构如下图所
2012CVPR是本论文的会议版本。本文是乘积量化技术(PQ)最典型的索引方式。1INTRODUCTION乘积量化技术在查询时,需要找到query对应Voronicell或者和周边cell的点,如果数据量比较大,Cell也比较大的话,那么返回的点就会很多,需要花在Refine上的时间也会更多。因此一个迫切的要求是设计更为细粒度的分区,即voroonicell面积更小。一个最直接的方式是把codewords的个数提升一些,但是这同时意味着索引构建时间(学习时间)也更长。一些索引方法也可以引入进来,比如kd-tree,treecodebooks等,但是经常会降低查询准确性。本文提出的方法:多维倒排
2012CVPR是本论文的会议版本。本文是乘积量化技术(PQ)最典型的索引方式。1INTRODUCTION乘积量化技术在查询时,需要找到query对应Voronicell或者和周边cell的点,如果数据量比较大,Cell也比较大的话,那么返回的点就会很多,需要花在Refine上的时间也会更多。因此一个迫切的要求是设计更为细粒度的分区,即voroonicell面积更小。一个最直接的方式是把codewords的个数提升一些,但是这同时意味着索引构建时间(学习时间)也更长。一些索引方法也可以引入进来,比如kd-tree,treecodebooks等,但是经常会降低查询准确性。本文提出的方法:多维倒排