掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 315|回复: 3

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

[复制链接]

该用户从未签到

发表于 2026-7-15 15:53:42 | 显示全部楼层 |阅读模式
本帖最后由 tsiank 于 2026-7-15 16:50 编辑 ( O$ R" l1 j8 ]7 p# r; f+ f! O  h
: ~& K) M1 b- A# l! g8 E3 M# p
借助于codex,基于Rayman Zhang的开源代码编译了一个windows端的命令行工具,用于制作mdx词典,另增加了将mdx/mdd导出为源文件的功能., V8 C) V/ M* g; s. K

. ]7 k4 l3 O% [需要注意的是使用此工具制作的mdx为v3格式,第三方工具应该都不支持,所以只能使用官方的mdict最新客户端.* \# p" l# T' r6 n3 z
  w  U2 m. |0 Z, r! b1 u
详情见源代码:https://github.com/tsiank/mdx_util6 C+ g" g  E. G$ J

. J. H; R6 F+ H6 d% f) w1 u工具下载地址:https://github.com/tsiank/mdx_util/releases/tag/mdx_util_v1.1
1 y% g" t- F+ d9 g% c) `$ ~1 V
: t& t$ N% z+ E我没有 Mac 设备,有想要在Mac上使用或者在Linux上使用的,可以自行编译.  u7 c+ g9 \1 I$ }( _0 R0 N  @
3 ~$ T7 N8 t' q+ R- _
使用方法及命令:
' x% R* r- ], I8 e( R命令  N2 p$ a, S8 O) C- P
test - 测试数据库结构6 r6 H1 D+ c$ h* F! h1 Q: v
读取词典文件并验证词条内容是否可正常访问。1 m' A: N4 x, h2 I9 E+ t' N2 Y, G5 ~

# F# }0 g" {4 F+ a. R4 i# 测试单个 MDX 文件7 O7 T/ y5 L% k- ]) ]1 c( A; l
mdx_util test /path/to/file.mdx
6 t# N1 i# L# D2 U
8 D( x% p( s0 i9 r6 ~$ Y# 使用 mdx 模式测试目录中的文件,并限制测试数量
/ V( q: K. ]+ Qmdx_util test --mode mdx --count 100 /path/to/directory
: \  l; ~2 r% z8 |+ z+ t) G. d# p- M2 l% y. [# C
# 测试 MDD 或 ZDB 风格文件
3 }/ i% \9 f1 K$ H! ]0 [; l+ ~' U/ Qmdx_util test --mode zdb --count 50 /path/to/file.mdd
5 {, I8 R, ]* K% B/ F6 i4 l! r
: Y5 [) W; N: X1 \5 N! u# 随机抽样测试,而不是顺序读取
! ]# \  P2 q1 o9 h9 F, mmdx_util test --random /path/to/file.mdx% s* B# Z& c! b$ b, l! {9 R- ~
常用选项:7 y( {% ^2 |9 H( M  e( `2 w8 b
! r5 H7 E( Y9 Q4 j
--mode:测试模式,支持 zdb 或 mdx,默认是 zdb: n& R# d! }* y" \& B( R( H4 r
--count:限制测试词条数量,默认测试全部词条
/ j* D+ ^1 M8 |$ g2 U# e1 A--random:随机抽样测试
5 _7 J. ~% U0 Plist - 查询词条
1 \) ?, y6 [8 O! k按关键词搜索词条,并显示匹配词条及其后续若干词条。
. D8 K7 \( R# u0 T) @7 K; Z1 |% d/ C. L" s& _$ ~! l
# 基本查询5 C! g& y! a6 L( k: I
mdx_util list /path/to/file.mdx "apple"
0 x4 {7 ?* Q6 b- f& m8 ]. F2 x7 z) a) ^# t- _1 }
# 显示 HTML 转文本后的内容预览
6 V4 K: v, B" `- S' smdx_util list --preview /path/to/file.mdx "search term"% r) r0 ]; k! W2 w. Y2 i1 g
3 A* A$ w5 r3 w* m: d- O/ t
# 前缀匹配
- C+ c5 F; [7 D# Gmdx_util list --start-with-match /path/to/file.mdx "prefix"# y; X4 i  W# U9 R+ X) A0 @
1 V" ~' M9 d, z. j/ Y: |+ w
# 部分匹配
$ D3 K% U6 J# i- h% \7 A8 imdx_util list --partial-match /path/to/file.mdx "pattern"# J" P' L% `. k$ J, W6 k
: n! G9 Q3 v+ ^* w1 F/ c( M
# 使用 mdx 模式查询
, v5 |/ t6 _3 g  |3 M! C) Nmdx_util list --mode mdx --preview /path/to/file.mdx "apple"
7 y, C% a& I! y( z6 h# s常用选项:( [; n7 L2 [  U3 M$ d, L

2 c9 Z" h" `7 v1 A* Z( e9 F, v--mode:查询模式,支持 zdb 或 mdx,默认是 zdb& m0 c  Y7 {! G! p% K
--preview:显示内容预览;纯文本内容在 HTML 提取为空时会回退显示原文
" ~, [' O3 c, f& @3 d/ C; x--start-with-match:前缀匹配$ S# J7 N: e9 d+ k' o3 e2 o8 b
--partial-match:部分匹配  c! _2 N5 @2 T" h4 G' t# v- |
create-index - 创建全文索引- U  _, H3 a! G- G5 P( V- D* y
为指定 MDX 文件创建 Tantivy 全文搜索索引。
( w* [; l9 a8 u  [: S) F1 H
3 y3 D) K; K+ q3 \& E8 t7 M! xmdx_util create-index /path/to/file.mdx$ i% |6 X# }% V/ [/ |* V- y# G; J
该命令会生成索引文件,用于后续快速全文搜索。
% Y( d! L1 m* ?5 p- @+ R
2 D  f3 a" n! l: gfts-search - 全文搜索1 @& s' m( j1 a5 q5 ^% X
使用已经创建的全文索引进行搜索。% k$ e& e' F& |1 ~' [( A9 S
1 A" M% ]" U( |2 p/ K8 a
mdx_util fts-search /path/to/file.mdx "search term"/ U6 l7 }- h% I* W( M; Y$ i
! f" n% |5 ~( ^2 x0 J3 \
# 搜索短语) |7 x' e; b1 X+ ?
mdx_util fts-search /path/to/file.mdx "exact phrase"# N9 D1 H1 Q  u3 l9 p) h7 h
默认返回相关性最高的搜索结果。# u& G3 `6 {. K& a1 s! ]/ C( v- w$ _

7 Y0 y' y1 N, a5 qconvert-db - 转换数据库
# S% ?4 [9 O$ E! b1 I  w; _1 X通过 JSON 配置文件把源数据转换为 .mdx 输出。
3 x, f6 R% ]6 S% V4 L
" x; g1 I7 [; G6 @# E& n* j( P# 只生成示例配置文件5 o' A: f  N7 |$ Y/ @
mdx_util convert-db config.json --generate-config-only# t8 Q- p% e3 t( ?1 U1 k

/ G- E* v1 I! v( L) h! s5 C# 使用已有配置执行转换
7 ^1 l' |' n( m7 h/ Cmdx_util convert-db config.json% |6 Q+ L  T6 @$ B
配置文件示例:
+ c( h) K+ P. s+ o2 ^( n- W% X9 l5 u1 Y# |2 [: e+ f3 I
{# A5 Y2 v( o  i3 X" ~# B
  "input_path": "/path/to/source.txt",
5 L' {, i8 r' k. k; H  "output_file": "/path/to/output.mdx",
5 C* N4 b6 a. R. d  "data_source_format": "MdictHtml",
7 t) e2 N9 {9 r( t1 }6 e  "content_type": "Html",1 R  Q! t. }+ T0 N$ d9 t5 L. }# s. N8 b
  "default_sorting_locale": "en_US",7 U( ^- N" p" \& O  d/ q0 y0 b
  "preferred_content_block_size": 65536,
5 @  e& v2 a. p0 [) Z/ W  "preferred_key_block_size": 16384,. ?3 }: U8 o0 _9 o- E! t, F! {
  "password": ""
4 S/ _, m  c& [}
6 [2 Y3 t; t( A6 O, @" b0 ^, @' Z注意:当前 writer 生成的是 ZDB v3 风格文件,虽然扩展名通常为 .mdx,但不是标准 MDict v2 writer。更多细节见 FIX_SUMMARY.md。% y% o0 q; n. g/ t0 v, ^6 A' a& o
$ O) i+ M# L7 `' [: G& w' w  E4 n" g
build-mdd - 打包 MDD 资源文件" M) n4 K  x& ^: r
将目录中的资源文件打包为 MDD。; |$ L2 |' [8 S) x  B
+ R; `1 [4 S0 l8 l" ]0 ~6 h2 \# Q
mdx_util build-mdd /path/to/resources output.mdd "password"& {- ?% ~5 w9 j/ i$ L* l% U: g
适用于图片、音频、样式文件等词典资源。
& O" b: x& {" f+ ]: p1 L4 K  N' l; J8 g  L5 M5 L
export - 还原源文本或资源文件
4 C. o5 ]5 {- y* z8 U. \# c8 L, Z将 MDX/ZDB 文本词典导出回 MDict 源文本格式,或将 MDD 二进制资源解包到目录。
( Q( I2 u4 ~5 e/ o! H& B: D5 L: O/ U8 b5 ^- {
# 导出 ZDB/MDX 文本为源文本格式8 `/ H$ z. j/ l5 d8 g0 g' }
mdx_util export /path/to/file.mdx output.txt5 U4 d2 d# {/ p: m! ^
6 q* k) Q, W  {) K8 i
# 使用 mdx reader 模式导出
' v: u9 P- ^3 I0 R9 O( h3 O6 q" g' Hmdx_util export --mode mdx /path/to/file.mdx output.txt0 |- W4 r8 R3 X0 ]9 u. v

- o9 p/ T* j2 Y4 `* g8 b) `# 导出 MDX 文本,并同时导出同名 MDD 资源9 l) g+ o3 x& l% O/ Y3 z8 |; u
mdx_util export --mode mdx --with-mdd /path/to/file.mdx output.txt
- [& c* Q" m) R
$ C& G1 I$ G# d8 u4 x# 批量导出目录中的 MDX 文件
7 A( \. |! i- `# P1 `) y: gmdx_util export /path/to/dictionaries output_directory6 c$ |% U, V- S- _, X& p5 m; R/ p
+ P8 E# ~; {  R0 o; |
# 使用显式选项指定批量导出目录, B3 b0 i( j. |& L1 t( R
mdx_util export /path/to/dictionaries --output-dir output_directory
( W8 ]( j( g  Q7 B& [9 _& o! X$ F' N" k; Z! b
# 批量导出目录中的 MDX 文件,并同时导出同名 MDD 资源
7 a: ]+ d& g5 _9 N( b$ qmdx_util export /path/to/dictionaries output_directory --with-mdd
3 {- P0 ]' p7 S! v( d' [( C+ `% N) B
# 解包 MDD 资源到目录! _8 T, |# c8 z6 S
mdx_util export /path/to/file.mdd output_resources
- g. {" M: d% i+ ?
8 P$ _, n: ^9 V8 }5 Y' T- c# 只导出前 N 个词条或资源,适合抽样测试
7 \- F: U( R& \; q3 v/ o) L$ Umdx_util export /path/to/file.mdd output_resources --count 100
; B7 s  h/ p* |7 G文本导出格式为:词条名、原始内容、</> 结束标记。Compact HTML 词典会导出 compact 源文本,并额外生成 output.txt.stylesheet.txt 这类 stylesheet 文件。资源导出会把 MDD 里的资源 key 映射为输出目录下的相对路径;同名 MDD 资源会导出到 <词典名>_mdd 目录。5 A* \7 h1 [8 a& E' K( h8 U
1 O9 {5 r2 ?; Q# q1 Z8 A2 i
keygen - 生成授权信息7 h& M( E  M" x; U
为加密或带密码词典生成相关授权信息。% a  m3 k7 _" W- t; E5 b
+ L* ?- H4 ]; P0 @6 `. q
mdx_util keygen "password" "[email protected]"
0 j1 B( t' H2 f2 R$ Y# F. Z
' J& d1 o+ @0 g/ {0 c2 K# 使用 UUID 标识& ^, W4 j( H  P
mdx_util keygen "password" "006F0050-0063-006B-0065-4444556494345454D00"
( B8 B8 F% F! z1 {1 X输出内容包括密码、数据库 cipher、标识信息和终端用户注册码。
  • TA的每日心情

    4 天前
  • 签到天数: 1657 天

    [LV.Master]伴坛终老

    发表于 2026-7-15 16:18:35 | 显示全部楼层
    本帖最后由 shawky.nasr 于 2026-7-15 16:24 编辑
    1 m# t7 A7 V4 e- C% a
    & x# v2 t& O+ g& y厉害 tsiank大

    该用户从未签到

    发表于 2026-7-15 16:46:43 | 显示全部楼层
    不明觉厉~   关注ing
  • TA的每日心情

    4 天前
  • 签到天数: 1657 天

    [LV.Master]伴坛终老

    发表于 2026-7-15 19:48:46 | 显示全部楼层
    本帖最后由 shawky.nasr 于 2026-7-15 19:49 编辑
    # J* F% P" q, X$ p/ q  g- }- f& m3 {0 p) W
    MacOS and Linux version
    0 L3 n% \6 {2 W8 I9 s7 }3 q: F1 ^- I+ J
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2026-9-1 23:11 , Processed in 0.019300 second(s), 21 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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