技术开发 频道

达梦全文检索的原理和实现

  词库的内存数据结构和词库中单词的匹配算法

  内存中单词采用层次结构保存

  假设字典中有如下的单词:中国  中华民国 国家 人民 民主

  在内存中按照如下方式按层排列,其中每一个方块代表一个字,箭头所指向为该单词的前一个字。

  单词按照如下方式匹配

  比如查找单词“中华民国”

  首先在第一层中使用二分法找到“国”字

  获得“国”下层的数组“中民”

  在该层使用二分法查找“民”,获得“民”下层的数组“华”

  在该层使用二分法查找“华”,获得“华”下层的数组“中”

  最后在该层找到中,至此,但此匹配完毕。

  索引的格式

  索引的格式是倒排索引的格式,也就是一个单词对应若干个文本表示。

  在达梦数据库中,建立全文索引的对象是rec中的字段,生成倒排索引使用数据库中的b树进行存储。

  在数据库是对某个字符字段进行全文索引,因此,rec的rowid作为该rec上该field的标示是必须要被记录的。

  因此倒排索引存储的格式如下。

  由于b树的字段长度是有限的,因此b树存储的格式为

  全文索引的查询

  全文的索引查询首先将对要查询的单词进行分词,然后在存储倒排索引的b树中将包含这些单词的rowid全部查找出来,并根据这些rowid在存储实际数据的b树中,将包含这些数据的行过滤出来。

0
相关文章