标签:
这里的静态结构化数据,是指从关系型数据库中抽取存储在NoSQL、文本文件或者其他格式文件的数据,并且数据不再变化。
全文检索是指任意字段的精确查询、模糊查询&范围查询。字母或数字模糊查询只支持前导查询,中文模糊查询则不受限制。
首先在抽取数据时,数据量特别大的数据表,按分区按ROWID分片分文件存储。
其次,实现数据查询。
思路一:
最常规的方法,在所有的字段上创建索引,由于事先不清楚数据的分布如何,因此都创建B+树索引。
中文模糊查询的实现是采用中文分词,把中文所有可能的分词组合起来创建索引。
思路二:
不区分字段,不区分字段对数据表的所有值创建bitmap倒排索引,key为数据值,索引value为该值所在的文件位置,并且按key值排序。
同时为倒排索引创建索引(即索引的元数据),内容包括该索引文件的最大和最小数据值以及每隔N行的数据值,用来加快定位数据的速度。
如,表T,某个数据文件的内容如下:
1,430111780101777,你好,测试,2016010101
2,430111780101778,你好,测试,2016010101
3,430111780101779,你好,测试,2016010101
假设第一行的偏移量为0,第二行的偏移量为1,第三的偏移量为3,那么对应的倒排索引内容为:
1:0
2:1
3:2
2016010101:0,1,2
430111780101777:0
430111780101778:1
430111780101779:2
测试:0,1,2
你好:0,1,2
对应的倒排索引元数据如下:
[data]
min:1
max:你好
[index]
1:1
标签:
原文地址:http://www.cnblogs.com/ethanhe/p/5182731.html