D 的个人博客

全职做开源,自由职业者

  menu

StoneAge Dict 技术方案的可行性[1]

上次和项目经理讨论了技术选型的事,现在简单地说一下,等下次开会再系统地讲。
1. 平台环境:
    Java1.5+
2. 用户接口:
    Web: JSP, JSF+Spring2.5x
    Desktop: JavaFX
3. 技术:
    dictzip(解析 StarDict 词库), XML
因为 StarDict 是目前很受欢迎的一个开源(GPLv3)辞典,拥有很多它做过格式统一的词库。我们可以基于这些词库构建我们的产品。

StarDict 词库基本格式说明:
1. 词库*.dict.dz 文件使用 dictzip 算法(基于 gzip)压缩的,保存了词汇的解释
2. 词汇索引文件*.idx,普通二进制文件,例如:
     star       0                                             231
     ^ 单词    ^ 在 dict.dz 中的 offset             ^ 在 dict.dz 中的解释长度
3. 信息文件*.ifo,普通文本。保存一些这个词库的说明信息,比如词汇量,版本,作者等

我们可以将 StarDict 的所有词库转换为我们的格式,用 XML 存储,压缩算法未定。

下面是词库转换子系统的可选方案:
方案一:
直接使用 StarDict 的 C++ 库。Java 写 Adapaters,JNI 调用,构建 Converter。
方案二:
纯 Java 编写转换 StarDict 词库。

目前,方案二已经在实验中,可以转换少量的词汇。(Heap space overflow)

好了,先到这里。
吃年饭了,祝大家新春愉快 :-)
等晚上继续实验。。。。