zoukankan      html  css  js  c++  java
  • StoneAgeDict现阶段设计小结

    今天和zy结队编程了一天,讨论了很多问题。主要是围绕词库的开放式、实时的基本特性讨论的。

    下面是对这两个特性的基本描述:

    What?

    1. 开放性

    注册用户可以在查询出来的词汇中提交自己的词汇解释。这个解释将被递交到词库审核组,由审核组的工作人员审核这个提交。

    例如,用户Daniel查询了beyond这个词汇,但是对这个词有着自己的理解,他可以提交这个理解给审核组。

    2. 实时性

    当一个新的词汇定义被审核组审核通过后,这个定义将被加入到词库中。

    例如,用户Daniel提交了beyond的一个定义,审核组通过了这个提交,则把这个新的定义追加到词库中的beyond词下。

    Why?

    考虑了词库的权威性,要完全做到开放式很困难,其最困难的地方就是词库的维护。

    1. 由用户自己维护自己词库的话容易导致词库内无用的单词过多,甚至是词库的无效

    2. 由专门的审核人员审核,工作量大

    权衡利弊,我们选择了由专门的审核人员审核的做法。

    How?

    词库分为两种:

    1. 查询词库

    由用户提交的查询请求都集中在这个词库中进行查询,如果词库中不存在用户要查找的词汇,则说明词汇未找到。这个词库内的单词是不能重复的。

    2. 待审核词库

    由用户提交的新词或者是对已有词汇定义的新增都放入这个词库,等待审核人员的审核。如果审核通过,则将该词加入查询词库:新词直接新建一个词汇记录;对于已有词汇定义的新增附加到该词汇的定义后。

    3. 词库的存储

    无论是查询词库还是待审核词库都采用数据库存储。经过测试,一个43W词汇的词库,检索一个单词可以在3-4s内完成。如果再建立缓存服务的话,效率可以保证。

    XML?!

    目前,XML格式的词汇文件作为核心交换文件格式。例如从查询词库中返回的词汇记录,采用XML格式直接传输到Web界面,由Web服务器解析后显示;从其他词汇网站/服务提供的单词转换成XML格式,并保存进入待审核词库

     

    实现

    1.OSGi Framework

    整个应用以OSGi作为底层框架,以面向服务的组件模型构建。这样可以做到很好的模块化,把耦合降到最低限度,为将来的扩展打下坚实的基础。

    2. 基本查询词库构建

    基本的查询词库StarDict词库转换而来,测试转换了一个43W词汇的英汉词库,耗时5小时。

    3. 查询缓存

    由于词汇量很大,做缓存是必须的。不过现阶段还没有做,还处于研究阶段。

    Another Idea....

    在确定以上方案后,还有一个方案可以选择:
    1. 每个用户都有自己的词库,词库中的每个词汇都有一个得分
    2. 查询词汇时从所有用户词库中查询
    3. 按词汇得分大小降序显示各个用户的词汇解释
    4. 用户可以对词汇进行评分
    5. 用户可以提交对某个词汇的修改,修改由该词汇的拥有者审核

    这个方案是建立在词汇评级以及词汇审核开放的基础上的,有一定的可行性。



     
  • 相关阅读:
    poj 1789 每个字符串不同的字母数代表两个结点间的权值 (MST)
    poj 1251 poj 1258 hdu 1863 poj 1287 poj 2421 hdu 1233 最小生成树模板题
    poj 1631 最多能有多少条不交叉的线 最大非降子序列 (LIS)
    hdu 5256 最少修改多少个数 能使原数列严格递增 (LIS)
    hdu 1025 上面n个点与下面n个点对应连线 求最多能连有多少条不相交的线 (LIS)
    Gym 100512F Funny Game (博弈+数论)
    UVa 12714 Two Points Revisited (水题,计算几何)
    UVa 12717 Fiasco (BFS模拟)
    UVa 12718 Dromicpalin Substrings (暴力)
    UVa 12716 && UVaLive 6657 GCD XOR (数论)
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6470509.html
Copyright © 2011-2022 走看看