作者:杨平平,兰燕,徐海昌,胡霞,欧阳佳
通过上述(一)和(二)分析,基于系统实用的思想,我们提出一种针对日汉词典的简单、高效的组织结构——隐关键字定长双索引存储机制。
(一)设计思想
根据日语的特殊性,我们分别以日文汉字和假名为关键字,按照各自关键字顺序建立由词条在词典中的偏移数值构成的索引。同时建立两个索引,存储空间就显得格外重要,所以我们不在索引文件中存储关键字信息,两个关键字仍旧保留在词典文件中,从而大大节省了索引文件的存储空间,同时也省去了以日文汉字和假名分别进行信息登录的麻烦。索引文件中采用定长数组直接存储相应关键字对应的词条在词典中的位置,达到提高词典查询速度的目的。
词典文件中的信息可以是无序的,两个索引文件分别按照各自的关键字有序排列。
(二)索引的建立
1、日汉电子词典的存储结构
日汉电子词典中每个词条包含日文假名、日文汉字及其相对应的汉语信息,每个词条各字段信息使用变长存储方式,整个词典无须排序。
词条1
|
日文假名关键字1
|
分割符
|
日文汉字关键字1
|
分割符
|
汉语信息
|
词条2
|
日文假名关键字2
|
分割符
|
日文汉字关键字2
|
分割符
|
汉语信息
|
……
|
……
|
……
|
……
|
……
|
……
|
词条k
|
日文假名关键字k
|
分割符
|
日文汉字关键字k
|
分割符
|
汉语信息
|
……
|
……
|
……
|
……
|
……
|
……
|
词条n
|
日文假名关键字n
|
分割符
|
日文汉字关键字n
|
分割符
|
汉语信息
|
图一:日汉电子词典的存储结构
2、建立中间索引文件
中间索引文件是包含关键字的索引文件,分别以日文汉字和假名为关键字建立两个中间索引文件。从词典文件中依次提取每个词条中的关键字及其相应的词条在词典中的偏移地址,并存入中间索引文件中。中间索引文件中的每个词条与词典文件中的每个词条是一一对应的。
假名关键字1
|
词条1位置
|
|
词条1位置
|
|
假名关键字1
|
词条1位置
|
假名关键字2
|
词条2位置
|
词条2位置
|
假名关键字2
|
词条2位置
| ||
……
|
……
|
……
|
……
|
……
| ||
假名关键字k
|
词条k位置
|
词条k位置
|
假名关键字k
|
词条k位置
| ||
……
|
……
|
……
|
……
|
……
| ||
假名关键字n
|
词条n位置
|
词条n位置
|
假名关键字n
|
词条n位置
|
假名中间索引文件
词典文件
汉字中间索引文件
图二:中间索引文件的结构
(注明:假名中间索引文件中:
关键字
2<
关键字
k<
关键字
n<
关键字
1
汉字中间索引文件中:
关键字
k<
关键字
1<
关键字
n<
关键字
2
其中
n>k
,两个中间索引文件是无序排列,词典文件也是无序的)
3、建立索引
将两个中间索引文件分别按照关键字进行排序,提取其中存储词条位置的数据分别存入两个索引文件中,生成系统使用的双索引文件。
词条1位置
|
|
词条1的各字段信息
|
|
词条1位置
|
词条2位置
|
词条2的各字段信息
|
词条2位置
| ||
……
|
……
|
……
| ||
词条k位置
|
词条k的各字段信息
|
词条k位置
| ||
……
|
……
|
……
| ||
词条n位置
|
词条n的各字段信息
|
词条n位置
|
假名索引文件
词典文件
汉字索引文件
图三:索引文件的结构
(注明:其中
n>k
,两个索引文件均为有序排列,词典文件是无序的)
从图三中我们可以看到索引文件与词典文件的词条是一一对应的,也就是说随着词典文件词条的增加,索引文件也会不断地增加,如果一次性将索引读入内存,可能会占用过多的系统资源,同时为了进一步提高词典检索速度,我们为词典文件建立了二级索引。二级索引文件的建立采用常见的分段索引的方式,也就是将一级索引以一定数量进行分段,将每段开头的数据存入二级索引文件中,二级索引指向一级索引文件。
(三)查询步骤
由于索引文件是有序的,且与词典文件中的词条一一对应,所以可采用“折半查找”的方法进行查询:
1、 由查询单词串定位相应的一级索引文件(日文汉字索引或假名索引);
2、读取一级索引文件中的数据(这里省去二级索引文件的查找过程),由该数据定位到词典文件,提取相应的关键字串;
3、用词典中的关键字串与查询单词串进行比较,确定下一步“折半查找”的方向;
4、重复步骤2、3,直至查询单词串与词典文件中的关键字串相匹配或确定词典中没有该查询单词串为止。