掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 470|回复: 3

[工具] mdx_util - MDX/MDD Database Utility Tool

[复制链接]

该用户从未签到

发表于 2026-7-15 15:53:42 | 显示全部楼层 |阅读模式
本帖最后由 tsiank 于 2026-7-15 16:50 编辑
2 f# P9 `2 F% p; [
, C5 [; e/ m$ B# c! R借助于codex,基于Rayman Zhang的开源代码编译了一个windows端的命令行工具,用于制作mdx词典,另增加了将mdx/mdd导出为源文件的功能.. {8 U8 v: M; f* }2 c
5 Y  ^9 W  P9 p+ w6 S8 U1 \9 Q
需要注意的是使用此工具制作的mdx为v3格式,第三方工具应该都不支持,所以只能使用官方的mdict最新客户端.
5 y/ N8 p1 K- _9 n+ ?$ V3 v
; E& I* `' n* q. ~/ L详情见源代码:https://github.com/tsiank/mdx_util
0 j0 {, A  L1 ^% _1 J& Z8 U2 W9 M1 r- N4 A2 _" N% I
工具下载地址:https://github.com/tsiank/mdx_util/releases/tag/mdx_util_v1.1
- J3 z5 j, F. X$ g9 O6 ]% k9 s8 z. q; ]2 o( H! Q
我没有 Mac 设备,有想要在Mac上使用或者在Linux上使用的,可以自行编译.
- z) S8 E4 {6 h% N2 n6 B) A/ q' q! S# t1 ]. h' n% w& g7 S) F
使用方法及命令:
: A% b1 ~% r+ b% X$ _, v命令+ W2 m6 n, o5 r
test - 测试数据库结构
5 X2 h& v) n5 ~' N读取词典文件并验证词条内容是否可正常访问。
! Z$ X3 q% W! i6 O2 Z& E; H0 L3 a% y: L: o$ p- e
# 测试单个 MDX 文件
4 f" t; T  q8 y9 a3 q& u8 {/ N( E( Cmdx_util test /path/to/file.mdx
+ n3 k8 V. d- U. _' E5 j( ~6 V( R" [" B$ g" D# N
# 使用 mdx 模式测试目录中的文件,并限制测试数量8 i6 ], s" ~  j0 O+ l4 {
mdx_util test --mode mdx --count 100 /path/to/directory! e% L' W/ J3 N- O# M9 s! g
% j. V, U% c* |* Q. P' I0 A* e8 K& s
# 测试 MDD 或 ZDB 风格文件
0 M" T+ Z7 {/ W9 ]+ b5 G! F7 Vmdx_util test --mode zdb --count 50 /path/to/file.mdd
( i9 p8 U9 z( G, E" I5 }  w
) J1 C' i' r* J2 j  f& `# 随机抽样测试,而不是顺序读取
1 h* Y- a, c7 N+ E5 Ymdx_util test --random /path/to/file.mdx$ [1 z( w5 Y" a3 y
常用选项:
  o9 ^4 J) Q3 m8 Q
# M1 S7 G4 I8 o: C2 U2 ^--mode:测试模式,支持 zdb 或 mdx,默认是 zdb
  D. B; v3 B+ E; p1 w% F--count:限制测试词条数量,默认测试全部词条
2 @- z  m9 v/ e1 O" Q, p' K3 U& V* [--random:随机抽样测试, S7 A8 R7 r! [1 l
list - 查询词条
0 U, @  y2 ~5 g5 V按关键词搜索词条,并显示匹配词条及其后续若干词条。
1 J1 I  v  X) R9 q+ U/ f& ^# @( u; z0 G* k; _
# 基本查询
' H! C  v) x/ y+ g# U) I( u2 I5 |; ^mdx_util list /path/to/file.mdx "apple"6 ?6 R8 W* j, t, b
& y9 q, Q) E3 [- K% D; s
# 显示 HTML 转文本后的内容预览
# ]' k4 c/ ~( s# omdx_util list --preview /path/to/file.mdx "search term"3 }! }# b) ?. |) O7 X: ^/ g; J) l: x

' P7 q! w3 q! D: j9 b* F' N/ ^# p5 C. h# 前缀匹配
# G# F+ h! J8 k, v/ Q) Emdx_util list --start-with-match /path/to/file.mdx "prefix"
  t6 Y  m* ~4 P. ^
% Q/ w' |4 Y6 R6 D% ]& b# 部分匹配) E& k. d( Y/ i  G7 d
mdx_util list --partial-match /path/to/file.mdx "pattern"9 _& g% O) u! k

7 b7 q0 b* M. z9 w% s0 P) b, A# 使用 mdx 模式查询
0 l% B5 {6 ^8 g; U# ^2 F* Z6 ~, Nmdx_util list --mode mdx --preview /path/to/file.mdx "apple", N' {5 P" A/ u- t( M( ~
常用选项:
" S1 n7 h; k# q- F* G7 Q( @3 J5 F* A, j3 y5 ^# c3 l
--mode:查询模式,支持 zdb 或 mdx,默认是 zdb
& _9 F6 a2 {0 K+ }  M+ l--preview:显示内容预览;纯文本内容在 HTML 提取为空时会回退显示原文
. w, }7 D( N( l--start-with-match:前缀匹配; N$ H, M3 C' T) ?' D
--partial-match:部分匹配
; I0 r  j1 @' Y3 Dcreate-index - 创建全文索引, F4 x/ t4 T0 R; ]
为指定 MDX 文件创建 Tantivy 全文搜索索引。  d8 @% ^! u( e! b
, j& c+ X( g$ c  t; s3 P' ~7 Z
mdx_util create-index /path/to/file.mdx
1 k( p+ f! S9 F5 K该命令会生成索引文件,用于后续快速全文搜索。
- Q) H# [  s9 k5 @" |; m- h, o$ @, c- H/ }- I; B0 ~
fts-search - 全文搜索9 L" i9 C' J: X, q4 m  L
使用已经创建的全文索引进行搜索。
4 t! E" a9 ~3 X& m' b9 ~; C* Q& m% f- e& s$ g9 O, G0 Q! C
mdx_util fts-search /path/to/file.mdx "search term"
2 N/ ]4 W9 |, O) X, F. o4 A8 y, Z" Q# T
# 搜索短语$ t! i# u; k$ ?3 |+ P" h
mdx_util fts-search /path/to/file.mdx "exact phrase"
# n' X; M$ f5 W/ Y* q! m  _默认返回相关性最高的搜索结果。1 W( u1 E% @! Y- I7 k# c& A
. }" H) Y$ Z$ H$ z3 `% r/ z* Z/ }1 J
convert-db - 转换数据库0 I6 {2 a# b- {- m0 p6 a0 T, o
通过 JSON 配置文件把源数据转换为 .mdx 输出。
  ?3 n7 C( {, q7 x
2 }6 G+ _# u7 w) N4 }4 x! F/ i. f# 只生成示例配置文件( d2 V" ^" f' F+ M/ i) ], {- ~
mdx_util convert-db config.json --generate-config-only% D. r% t! V# Q6 F, z, Z% z

* S. Z# N- u! @8 H( W( b: ]$ p# 使用已有配置执行转换
% z; g0 {6 V! u" {& bmdx_util convert-db config.json
4 e: \: q1 n" S0 E7 \) E配置文件示例:9 a, B) D! K% d: G/ A

% x* L( e; \9 b$ C; ?3 o+ j, h{
, z% H7 K7 y4 F* p! p& e  "input_path": "/path/to/source.txt",) p" Q& y" Q8 S. a
  "output_file": "/path/to/output.mdx",
; w' Q: l9 o' p( H: ?  "data_source_format": "MdictHtml"," h' v. T  _9 `* ?% [0 a
  "content_type": "Html",
! c% h1 H' [- ~$ n  "default_sorting_locale": "en_US",
' I$ ]) F3 ^8 c1 Y: c  "preferred_content_block_size": 65536,
" |- _! B8 M: k, e$ b  "preferred_key_block_size": 16384,* n1 R" Q- M! I. w  B; u" t: {
  "password": ""+ S* l& ?5 i" M! N
}* y9 ?' X& d8 ^6 s8 z' Y: f0 X# K
注意:当前 writer 生成的是 ZDB v3 风格文件,虽然扩展名通常为 .mdx,但不是标准 MDict v2 writer。更多细节见 FIX_SUMMARY.md。
7 H  L3 F1 ]1 A6 m9 ?" ^* }) {1 U! @& e- R* k$ C/ c3 k" ^$ n9 s
build-mdd - 打包 MDD 资源文件
- v& N; b, U' q4 m$ I# W将目录中的资源文件打包为 MDD。
* \: u. c, w+ y* }5 ~  q+ [2 a  i0 ?) K2 w& ]0 ?  ^1 c" x1 P
mdx_util build-mdd /path/to/resources output.mdd "password"6 ?1 q$ Z9 S1 X' ^
适用于图片、音频、样式文件等词典资源。0 T# \- w3 O6 t
$ I" j7 \5 o9 Y9 {( J# u7 H
export - 还原源文本或资源文件( b; {  p) j1 \8 H% k) ?3 {
将 MDX/ZDB 文本词典导出回 MDict 源文本格式,或将 MDD 二进制资源解包到目录。$ U9 |' t1 J$ U7 ?  x6 W7 L
! \! ~( \% ^* S( {2 c, b% @7 E
# 导出 ZDB/MDX 文本为源文本格式
& l2 N9 F* m/ M( imdx_util export /path/to/file.mdx output.txt
9 t$ |- k, X+ O3 T5 H/ b' m* l5 `2 ]' V* d/ B# _# ~
# 使用 mdx reader 模式导出6 `& y. }7 ^) k" n, c5 ^  s
mdx_util export --mode mdx /path/to/file.mdx output.txt: z1 R% h0 C: c) x
5 [# M# i2 a, ]- F
# 导出 MDX 文本,并同时导出同名 MDD 资源5 X! _* A5 C& L; d9 M. L
mdx_util export --mode mdx --with-mdd /path/to/file.mdx output.txt$ Y" _; R: ^" q2 p
/ F8 y7 x4 [1 M! q
# 批量导出目录中的 MDX 文件
8 [  h; u$ u4 z( l7 x: k3 E( W- |mdx_util export /path/to/dictionaries output_directory* x3 r, Q9 L2 k$ h0 ?3 M

4 l: \6 S2 I8 `% N. i. w4 ~# n8 a# 使用显式选项指定批量导出目录/ v' Z! J2 W8 ]* z% J. H! w: e6 u
mdx_util export /path/to/dictionaries --output-dir output_directory
/ Y$ H/ c3 t: a/ z/ ?- B+ C) h/ S" B/ ~5 v& r* s4 r* E
# 批量导出目录中的 MDX 文件,并同时导出同名 MDD 资源2 |+ U& j2 ~8 c% }. n0 }$ ?; y0 R
mdx_util export /path/to/dictionaries output_directory --with-mdd
5 Y7 R, {5 w1 @2 P* ?% d* q) {) s
# 解包 MDD 资源到目录
- Z/ Q$ {8 i& @" f  p. ymdx_util export /path/to/file.mdd output_resources
  n2 \" a4 v' g0 E( {" H& ^1 B* X* `& A# h) A% q/ c0 J, h* N
# 只导出前 N 个词条或资源,适合抽样测试
0 I; f$ D; j" dmdx_util export /path/to/file.mdd output_resources --count 100. n  F. ~0 T+ n5 P* o8 n
文本导出格式为:词条名、原始内容、</> 结束标记。Compact HTML 词典会导出 compact 源文本,并额外生成 output.txt.stylesheet.txt 这类 stylesheet 文件。资源导出会把 MDD 里的资源 key 映射为输出目录下的相对路径;同名 MDD 资源会导出到 <词典名>_mdd 目录。+ x9 R* k7 U& m; Q' J
  a; d" p3 \$ g8 Q  ?" o- t
keygen - 生成授权信息( E) [- q2 C' N2 S7 A5 @" P7 \
为加密或带密码词典生成相关授权信息。
* c+ i- }1 q) Q: v9 N7 H4 x" V8 b3 T! C  H8 T
mdx_util keygen "password" "[email protected]"! ^# g; c, n* H/ T
1 Z5 y" N) q; w, I7 v
# 使用 UUID 标识( r+ V! W7 O; ]% M
mdx_util keygen "password" "006F0050-0063-006B-0065-4444556494345454D00"
: t0 w& Z5 q$ N0 G  g# n6 J输出内容包括密码、数据库 cipher、标识信息和终端用户注册码。
  • TA的每日心情
    怒
    6 小时前
  • 签到天数: 1692 天

    [LV.Master]伴坛终老

    发表于 2026-7-15 16:18:35 | 显示全部楼层
    本帖最后由 shawky.nasr 于 2026-7-15 16:24 编辑
      o" v% C8 D3 R! W# s! h
    / t6 @) Y! A. q$ r- k. F厉害 tsiank大

    该用户从未签到

    发表于 2026-7-15 16:46:43 | 显示全部楼层
    不明觉厉~   关注ing
  • TA的每日心情
    怒
    6 小时前
  • 签到天数: 1692 天

    [LV.Master]伴坛终老

    发表于 2026-7-15 19:48:46 | 显示全部楼层
    本帖最后由 shawky.nasr 于 2026-7-15 19:49 编辑 + i  h2 m, _) f9 g, Z0 ?6 H& V

    5 E, Z- a* n/ L) l# qMacOS and Linux version- {2 e, ]% Q' Q- O* ?

    . ^1 \4 x! d* p+ y8 z. B* g
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2026-10-17 08:02 , Processed in 0.171713 second(s), 21 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表