赞
踩
全文索引技术就是将各种信息,文档中所有的文字序列都作为检索对象,找出包含检索词汇的信息或文档。
全文索引在数据库中一般是作为单独模块使用的,如MYSQL全文检索工具——Sphinx,一般全文索引模块需要配合数据库的存储方式进行处理,因为涉及到具体索引文件的存储(全文索引的索引文件较大),全文索引要具体结合存储的索引技术共同作用来提高查询和匹配,这里以gbase全文索引为例来进行描述。
gbase8a存储采用列存,压缩和只能索引,再加上全文索引技术,共同作用来进行检索。默认采用全单字索引方式,支持所有语种,可以保证100%的查询召回率。
基本概念:
分词:将一个值序列切分成一个个单词。自然分词就是单词间以一定标识符作为自然分界符,三元分词的“3”是指当连续的英文或数字超过3个时,按3个一组切分。如果原始数据正常切分就不足3个,那就直接当成一个key存到索引中了。中文一般采用单字切分。英文和数字,全文使用自然分词和三元分词。
单字分词:
数据库知识非常的nice
分词后 数/据/库/知/识/非/常/的/nice
三元分词:
数/据/库/知/识/非/常/的/nic/e
倒排索引:
倒排表以字或词为关键字进行索引,表中关键字所对应的记录表项记录了出现这个字或词的全部文档,一个表项就是一个字表段,它记录该文档的ID和字符在该文档中出现的位置状况,
因为每一个字或词对应的文档数量在动态变化,因此倒排表的创建和维护都较为复杂,可是在查询的时候因为能够一次获得查询关键字所对应的全部文档,因此效率高于正排表。在全文检索中,检索的快速响应是一个最为关键的性能,而索引创建因为在后台进行,尽管效率相对低一些,但不会影响整个搜索引擎的效率
具体可以参考什么是正向索引、反向索引(倒排索引)? - JavaShuo 进行了解
举个例子:
文档集合
文档编号 | 文档内容 |
1 | 数据库知识非常Nice |
2 | 数据库知识特别Nice |
3 | 关系数据库和非关系数据库都非常Nice |
分词后
文档编号 | 文档内容 |
1 | 数据库/知识/非常/Nice |
2 | 数据库/知识/特别/Nice |
3 | 关系/数据库/和/非/关系/数据库/都/非常/Nice |
生成倒排表
单词ID | 单词 | 倒排列表(docid,HIT) |
1 | 数据库 | (1,1)(2,1)(3,2),(3,6) |
2 | 知识 | (1,2),(1,2) |
3 | 非常 | (1,3) |
4 | Nice | (1,4)(2,4)(3,9) |
5 | 特别 | (2,4) |
6 | 关系 | (3,1)(3,5) |
7 | 和 | (3,3) |
8 | 非 | (3,4) |
9 | 都 | (3,7) |
这样就形成倒排文件doclist 和hitlist
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。