掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 66|回复: 3

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

[复制链接]

该用户从未签到

发表于 昨天 15:53 | 显示全部楼层 |阅读模式
本帖最后由 tsiank 于 2026-7-15 16:50 编辑 5 @& ~7 }: W/ I- L
+ N: s1 k0 D6 y. f9 ~7 r
借助于codex,基于Rayman Zhang的开源代码编译了一个windows端的命令行工具,用于制作mdx词典,另增加了将mdx/mdd导出为源文件的功能.
" @- N2 q$ Q. z, e+ M# |8 {  d" I; R& f& |  K
需要注意的是使用此工具制作的mdx为v3格式,第三方工具应该都不支持,所以只能使用官方的mdict最新客户端.
3 O# m4 |* K+ ^) ^( h7 U5 k3 A0 p2 Y: x6 ?9 J$ s& i
详情见源代码:https://github.com/tsiank/mdx_util& R+ f& |+ M! x: M

+ V- ?/ z8 M5 e5 n, Z  F+ o* ^' K工具下载地址:https://github.com/tsiank/mdx_util/releases/tag/mdx_util_v1.1
! N* T; @5 B. s, ^" V! h0 |+ C! W# b! a5 h. f* E. _0 Q
我没有 Mac 设备,有想要在Mac上使用或者在Linux上使用的,可以自行编译.
3 q9 B; _7 h5 W- P$ Q$ j) ?/ u1 s7 Y) ]& ^* C/ i8 s0 M
使用方法及命令:+ e& ^; C) s, P( a. W; P& E
命令
# x; Z. o% @6 O9 @' s. ^test - 测试数据库结构  n* P0 a. r* `
读取词典文件并验证词条内容是否可正常访问。9 `3 f% g4 {3 t4 j
2 Z( Q0 z) o& z5 |) H9 G
# 测试单个 MDX 文件) ~. f5 m! B2 m$ ?0 J6 k# [9 @
mdx_util test /path/to/file.mdx* C+ b+ V& I  l' ]7 A6 ^
. j/ G, P4 D( I1 S8 u
# 使用 mdx 模式测试目录中的文件,并限制测试数量8 F0 |5 }. V9 v" ?. \9 L6 j
mdx_util test --mode mdx --count 100 /path/to/directory
- g, ?; e7 L2 c7 G% G
# _/ S: a) p1 r2 T# 测试 MDD 或 ZDB 风格文件
4 [+ j8 W* V' H& ?* O' P4 Y9 X, @mdx_util test --mode zdb --count 50 /path/to/file.mdd5 e% c' T2 Q. o' u% c

+ `2 x, N$ y4 W6 X1 @4 }$ J# 随机抽样测试,而不是顺序读取1 j( e$ r7 z5 ?+ ~9 Q8 `
mdx_util test --random /path/to/file.mdx& z& X- U0 H% {* k
常用选项:' W5 X$ }( I/ x+ q' e
8 _% s4 e7 E" p/ u- {% q9 [6 Y: n
--mode:测试模式,支持 zdb 或 mdx,默认是 zdb
3 C0 K8 K' f. c: y--count:限制测试词条数量,默认测试全部词条
$ @) h8 J' `1 A8 m0 h# ?! n--random:随机抽样测试
- Y* Y% c) z$ S" elist - 查询词条
. l2 W# d) G" p5 P按关键词搜索词条,并显示匹配词条及其后续若干词条。* Q- Y; D: w5 s! b8 M8 c
# c' D; d$ C* }6 w
# 基本查询
4 W1 K. q3 x; tmdx_util list /path/to/file.mdx "apple"
2 T/ ]7 [) y* ~! c$ y( Y
- v: I  w& z1 O. k& u; s( H; c# 显示 HTML 转文本后的内容预览
7 s# R0 Y2 p% N( w( o' M% y4 e0 `mdx_util list --preview /path/to/file.mdx "search term"2 K& c3 w# \/ q* v! D% b9 f6 x
4 |! x# I( {5 a% {3 @& h: ^( p
# 前缀匹配; {. U( G" T3 B5 w! A- K0 `5 w
mdx_util list --start-with-match /path/to/file.mdx "prefix"
/ O0 O# I' t6 |5 R! Q5 i
$ [  o0 D; C1 l+ L- M# 部分匹配
3 Z  O- {  D5 k8 `mdx_util list --partial-match /path/to/file.mdx "pattern". t+ D# S2 N, J% K

3 d: \% y6 z4 ?0 p6 X: _; H# 使用 mdx 模式查询  P6 R' W3 l, R# F  u
mdx_util list --mode mdx --preview /path/to/file.mdx "apple"
. V/ P) ]1 {3 c常用选项:" K2 y8 P  f, @) q" G

7 E9 q8 i; j2 n* v* p" x--mode:查询模式,支持 zdb 或 mdx,默认是 zdb  r  A$ O6 e$ w1 c
--preview:显示内容预览;纯文本内容在 HTML 提取为空时会回退显示原文8 w" ?- m4 u0 q0 }; a
--start-with-match:前缀匹配! R0 A% U% O3 d* w/ Y  `
--partial-match:部分匹配& k7 @( B/ `( r& y6 P* c& `
create-index - 创建全文索引+ D8 g# f, f! Q/ [, ^
为指定 MDX 文件创建 Tantivy 全文搜索索引。: r/ f! |4 H; P% P2 }8 T/ b( h

8 k+ t" |+ @1 C5 S( c( nmdx_util create-index /path/to/file.mdx% O( Y0 T5 Y3 |" v! c
该命令会生成索引文件,用于后续快速全文搜索。6 M. }8 j7 _$ N3 P) G% N8 @, U7 a
- d6 Z0 d( s1 C5 x; R8 C
fts-search - 全文搜索
* @6 P9 X9 |$ l3 K使用已经创建的全文索引进行搜索。
0 ?  K1 v$ t! q7 _% }. ?$ x* \
4 a. {8 p1 o9 v( D& d8 ]. j* g9 ~mdx_util fts-search /path/to/file.mdx "search term"
" f& A' f: y, K6 X) R6 ~9 ?- R
' c, ~: {% v  B# 搜索短语! T8 ]( U. q# A# H/ I. ?( q
mdx_util fts-search /path/to/file.mdx "exact phrase"
6 [( P# s3 x# A% \) c* I; D默认返回相关性最高的搜索结果。
9 E4 F" T% w6 d  C
7 ~+ ]& k7 \( sconvert-db - 转换数据库
/ T1 b4 E; O0 r2 ^! c' p$ c' C通过 JSON 配置文件把源数据转换为 .mdx 输出。
3 a+ X) ]6 I3 M/ t
& D' }2 |6 B; d; J% r( F% r7 b- ~# 只生成示例配置文件
& h, y7 }- {$ Y" e8 m. fmdx_util convert-db config.json --generate-config-only/ F  I) H. U1 }3 Z
: T- r& s' l; z2 K3 w# y
# 使用已有配置执行转换
6 ?& J6 u/ y# Q" \) Gmdx_util convert-db config.json
/ n' C$ N0 M, A& I) M- e0 g* [/ l配置文件示例:! q+ P% u! m" _- q2 ?7 `

  b) D7 w! }( O$ X- ^/ f% e{. B$ M$ m. N" F. p! V
  "input_path": "/path/to/source.txt",5 K5 R- @$ _: M5 @# g) z& s2 Z
  "output_file": "/path/to/output.mdx",7 {2 \0 A2 ?& v" S# b2 a+ e
  "data_source_format": "MdictHtml",
' D$ ^' z* K8 R' a; C  "content_type": "Html",0 @8 p$ N% u& v( ^0 @
  "default_sorting_locale": "en_US",3 j+ N$ v9 a; I* t& A
  "preferred_content_block_size": 65536,3 L8 i" a* n% p' ~
  "preferred_key_block_size": 16384,
0 O- s! Z3 \* ]3 E! ~; ]) o  "password": ""
% v# x4 g5 `( i  E2 a  O# c0 `}9 }( x1 f1 ^5 X1 s! o
注意:当前 writer 生成的是 ZDB v3 风格文件,虽然扩展名通常为 .mdx,但不是标准 MDict v2 writer。更多细节见 FIX_SUMMARY.md。! C% r: n* p4 H- B8 \- s

1 o$ Q& ?9 a& S0 K* G  ^build-mdd - 打包 MDD 资源文件7 h. L7 [* V5 B& P- x1 H
将目录中的资源文件打包为 MDD。
; q* N# z0 d8 L
* Z; t6 S/ y3 j1 J- |  i; n9 imdx_util build-mdd /path/to/resources output.mdd "password"
7 z! t, ?) |9 p2 e+ S适用于图片、音频、样式文件等词典资源。
2 y" D8 R2 C% q- f3 p; q: L, z% V$ F. ~/ Z, d
export - 还原源文本或资源文件
& \4 [+ l- d) i% {将 MDX/ZDB 文本词典导出回 MDict 源文本格式,或将 MDD 二进制资源解包到目录。
! b! }0 h- S! K* R
; K9 A1 w% n& m/ M3 f* @% w( g# 导出 ZDB/MDX 文本为源文本格式- C( w( h6 e8 D9 E% i, t: l
mdx_util export /path/to/file.mdx output.txt
; }7 p+ A+ [2 Z, g" g7 B  e8 ~- e6 u% E2 Z2 d( _
# 使用 mdx reader 模式导出
' ~: _5 R5 R+ y- ^mdx_util export --mode mdx /path/to/file.mdx output.txt
$ N4 U/ y/ j8 \3 i+ ~9 P) W
1 [! Z8 M3 V! _  H4 D3 L# 导出 MDX 文本,并同时导出同名 MDD 资源& p9 v6 R/ X1 U! C! |" e5 f
mdx_util export --mode mdx --with-mdd /path/to/file.mdx output.txt, A: a& R8 V) h) T; R8 G. Y

  {4 L" ^3 M% ?# 批量导出目录中的 MDX 文件4 h1 s* \$ D7 C; C
mdx_util export /path/to/dictionaries output_directory* Q2 ?4 I' o: [: r- e) H1 h
4 d; O+ r* T! U$ K, n9 D2 ^1 |$ T* \
# 使用显式选项指定批量导出目录
# |1 W# T( U. I+ C) K, lmdx_util export /path/to/dictionaries --output-dir output_directory
: W8 j5 t& v7 G" u" \* b: a, G+ D; I/ M7 s- z
# 批量导出目录中的 MDX 文件,并同时导出同名 MDD 资源" L6 X3 _( s* |  x: b+ t0 A5 M
mdx_util export /path/to/dictionaries output_directory --with-mdd
4 [% `$ g7 i9 p) }; h( X, _8 x  l" F5 B- V0 J' F
# 解包 MDD 资源到目录
1 `' c5 u6 f$ ?mdx_util export /path/to/file.mdd output_resources8 ]+ T7 r1 I& {+ O1 C

1 l  m+ P1 l+ n) ?# 只导出前 N 个词条或资源,适合抽样测试& V. o5 D: c0 k6 N* p, }7 H& o3 j7 E
mdx_util export /path/to/file.mdd output_resources --count 100
) K3 f8 ^+ @% T4 a! G( @3 \: m) p3 }文本导出格式为:词条名、原始内容、</> 结束标记。Compact HTML 词典会导出 compact 源文本,并额外生成 output.txt.stylesheet.txt 这类 stylesheet 文件。资源导出会把 MDD 里的资源 key 映射为输出目录下的相对路径;同名 MDD 资源会导出到 <词典名>_mdd 目录。
9 @8 p* z; C# D
, \8 {/ a3 ?/ Y, X8 nkeygen - 生成授权信息
1 D7 m0 ?4 P- l为加密或带密码词典生成相关授权信息。! F7 k# H! g; p

; _$ e/ o8 [* Amdx_util keygen "password" "[email protected]"
0 {1 k; M* J3 [* @, z# X/ T7 J- `( R
3 h2 H- J0 z5 o# 使用 UUID 标识
3 l, j) M  f4 l$ imdx_util keygen "password" "006F0050-0063-006B-0065-4444556494345454D00"4 Q& D+ x" Q7 r; w
输出内容包括密码、数据库 cipher、标识信息和终端用户注册码。
  • TA的每日心情
    郁闷
    昨天 19:14
  • 签到天数: 1629 天

    [LV.Master]伴坛终老

    发表于 昨天 16:18 | 显示全部楼层
    本帖最后由 shawky.nasr 于 2026-7-15 16:24 编辑
    ) C: c/ G2 w. \& D- l- \! N5 h7 h, K# L3 ^
    厉害 tsiank大

    该用户从未签到

    发表于 昨天 16:46 | 显示全部楼层
    不明觉厉~   关注ing
  • TA的每日心情
    郁闷
    昨天 19:14
  • 签到天数: 1629 天

    [LV.Master]伴坛终老

    发表于 昨天 19:48 | 显示全部楼层
    本帖最后由 shawky.nasr 于 2026-7-15 19:49 编辑 % O4 I4 I: c, t4 R1 j4 l4 \

    " a0 |- s& q. Q' m/ E0 yMacOS and Linux version
    . j9 ~, y6 {1 I  p5 U, P, i
    & L' t6 [( a) ?1 E' `
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2026-7-16 20:31 , Processed in 0.023831 second(s), 21 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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