打算用swiftui搓个新词典软件出来

2.18:大进展,以next-gen-dictionary-standard/Specification.md at main · freemdict/next-gen-dictionary-standard · GitHub 为蓝本改进了数据库结构,支持自定义ztsd压缩字典和读取压缩后的数据。
现在制定的结构大概是这样的:

  • metadata 表 - 词典基础信息
  • id: 主键
  • key: 键名
  • value: 文本值(存储词典名称、作者、版本等)
  • bin: 二进制数据(存储图标、压缩字典等基础资源) 主要包含:
  • 词典的名称、作者、出版商、版本信息
  • 词典图标
  • CSS样式表
  • ZSTD压缩字典
  • 其他元数据信息
  • content 表 - 词条主体
  • id: 主键
  • key: 词头文本
  • headword: 词头HTML (ZSTD压缩)
  • value: 词条内容HTML (ZSTD压缩)
  • seq: 排序序号
  • citation 表 - 自定义查询模式内容
  • id: 主键
  • to: 关联的词条ID(外键)
  • anchor: 内容标识符
  • value: 查询内容(ZSTD压缩)
  • type: 类型(如例句/释义等)
  • seq: 排序序号用途:
  • 支持按类型搜索特定内容(如只搜索例句)
  • 可以独立检索和展示词条中的特定部分
  • 为不同类型的内容提供专门的查询接口
  • link 表 - 词条关联
  • id: 主键
  • key: 关键字
  • to: 目标词条ID
  • type: 关联类型
  • font 表 - 字体文件
  • id: 主键
  • key: 字体名称
  • value: 字体格式
  • bin: 字体二进制数据

2.6:做了一个星期的无用功,自制的格式有很多问题,我又改回用sqlite了…
1.29更新:指定词典目录递归添加多本词典做好了。隔离做好了,搜索结果栏用的是shadow dom隔离,正文用的是iframe隔离。
剩下的只有索引方式需要改进,还有处理图片链接和跳转链接。

1.24更新:被sqlite扩展弄到破防。打算把词典数据改成.xml,然后实现压缩和读取。

1.23更新:全文檢索實現了。用的是xapian…

1.22更新:
我服了…被sqlite索引搞破防,怎么实现按字索引?

更新:
破大防,本来左侧边栏是个大的webview,但是我觉得比较难看(为了往物书堂那种风格上靠),改成html转nsattributedstring了,结果导致了一系列的问题,比如无法正常显示为词头指定的字体…

前情提要:

算有个雏形了,趁春假(2-4月)时候再改改。

5 个赞

看好你哦,靓仔

看起来不错!全文检索会实现文本高亮吗?

打算支持,现在没有纯粹是因为这个部分的代码没写。

1 个赞

希望能够有自制词典的模板功能,就是创立一个词典,自己输入词头,意思,和例句

这两天有新进展吗?

格式改成转换xml后的二进制文件了,倒排索引也做了,但是有些显示问题(因为做了隔离,左侧边栏无法显示css指定的样式。现在还在改。

1 个赞

没有问题,只是你为什么要用 xml?

也说不上来是为什么。就是感觉sqlite搭配xapian怪怪的,然后sqlite的swiftui怎么编译带插件版的也一直没搞懂,本来想编译一个带simple插件的版本,但是搞了半天也没搞定。

我明白了,xml 代替的是 sqlite 对吧,词条和内容直接存储在 xml 里。

嗯,是这样的…

没看见下载呢?