是否有办法恢复词条的原始排序

这是原始的源文件,排序是乱序 53412:

5
5
</>
3
3
</>
4
4
</>
1
1
</>
2
2
</>

但一旦用MdxBuilder编译为mdx,并用MdxExport将这个mdx导出为txt后,其顺序就变成升序12345了:

1
1
</>
2
2
</>
3
3
</>
4
4
</>
5
5
</>

鉴于原始词条的排序信息对某些词典很重要,请教:mdx中是否还保留有原始词条的排序信息?如果包含有原始的排序信息,如何才能导出为带有原始排序的源文件?

2 个赞

需要使用这个排序信息,改造现有词典。

案例文件.zip (900 字节)

如果原txt已经用MdxBuilder编译为mdx,原始词条的排序信息很可能已经消失了。因为编译一般只会排序不会新增字段,即便是用现有的开源如py脚本去编译。当然,MdxBuilder并不开源,只有原作者能给出确定答案。
如果原txt还存在,那就不能用MdxBuilder,而要用专门改造过的开源py脚本去编译为mdx,新增字段以同时保留两种序号。

2 个赞

词库文件编译后的里面的词条顺序是编译软件和词典软件本身所决定, 也就是开发者决定的, 这个你无法改变. 至于排序的原因, 个人认为应该是为了提高检索速度.

如果你是想要保留原始的排序信息, 有一个非常简单的办法: 在原始文件的释义部分加入一个"无用"的 HTML 闭合标签, 里面存入原始的排序序列号, 并将此标签设置为不显示. 在经过编译反编译之后, 如果想要恢复原始排序, 可以用文档编辑工具将词头, 释义等合并到一行里, 然后用正则将"无用"标签里的序列号提取到单独的一列, 之后以此列排序即可实现.

不要问我这个办法是怎么想出来的, 说多了都是泪……

ps. 1.对原始文件排序原则上应该不会影响词库的工作表现, 这里说"应该"指的是如果没有重复词头的情况下, 在有重复词头时或许会有些许影响(不同的词库格式影响不同);
2. 制作词库时建议最好不要出现重复词头, 该合并的合并(一词多意), 该舍弃的要舍弃(单词规则变形啥的)

3 个赞