今晚花了点时间把mdict转成了sqlite,来说说我遇到的一些问题。

我在网上找到python库解析mdx,把词条一个一个转成文本存储到sqlite数据库里。
结构和mdx类似,key-value到形式存储。
我想写个自己的词典,目前个人的需求有下:
1.存储所有查词的时间,次数。
2.支持不同页面查询不同词典或不同词典组
其他的需求还没想到

但这个事情我现在不想做下去了,原因是goldendict解决了非常多的问题,这些问题很麻烦我不太想去解决。

1.词典的外置css和js引用非常麻烦,我存数据库里很难索引。
2.词典内跳转难以实现
3.全文搜索这个功能非常牛逼,goldendict居然是在压缩后的html文本里搜索的。
4.词典的显示问题是个大坑。里面的link并不是标准的http url。

3 Likes

我之所以选择写一个词典是因为现有的词典乱七八糟的功能太多了,写词典软件的人明显不怎么经常用词典。而我刚好最近在大规模的使用词典,现有所有的词典都令我不太满意,只有goldendict稍微好点,但依然有不太满意的地方。当我自己动手开始撸代码的时候才发现他们的牛逼之处。
目前看起来我把他们牛逼的地方去重写一遍,不如我自己动手去改进golden dict更快一点。

1 Like

现有的代码实现,可以参考:

数据存数据库是正确的思路,并且 MDX 数据都是需要渲染的时候二次处理的。至于改 goldendict,如果你不是 C++ 熟手也建议不要碰。

我目前的想法是数据和渲染完全分开,类似前后端分离,数据端就是一个 API server,提供一堆 API ,前端自己拿 React Vue 糊,当然,一个想法而已,想了很久了。

我是c++苦手,做过相关的client端的开发。

那你兴许可以考虑修改goldendict

不过画新轮子未尝不是一个好的方法。

“存储所有查词的时间,次数”这个需求,不需要重新实现一遍辞典软件,在 GoldenDict 里即可完成。
在 GoldenDict 里选“词典来源”,有个“程序”,这里面可以用命令行引用外部程序,这里写上你自己的程序,你程序里只用记录时间、次数等你想记的信息,不需要词典本身的数据,查词时自动全部显示。
参见 提示信息 - 掌上百科 - PDAWIKI - Powered by Discuz!
GoldenDict + Markdown(or 任何格式化良好的文本) - GoldenDict - 掌上百科 - PDAWIKI - Powered by Discuz!
(这两个例子是用外部程序实现了各自自己想要的功能,不是楼主要的记录时间、次数,举这两个例子只是展示这个外部程序的思路,至于具体想记录什么信息,楼主会编程的话自然很简单)

goldendict 的文档为啥没写这个?看起来是直接通过输入输出来实现的。


已经成功搞定了,这是我的程序输出的记录。

GD 的文档确实挺不全的
搞定了就好