pinyin-engine
pinyin-engine copied to clipboard
关于拼音匹配引擎的疑惑
首先,非常感谢github上您贡献的 pinyin-engine 库,最近也在研究学习,但是有个问题,希望您能帮忙解答下,就是:源码中的 dict-cn.json
文件是如何生成的,而且 decode.js
文件是专门用来解码这个字典json的,这个加密过程是如何实现的?
我来回答你吧。大神估计时间少。
回答你第一个问题:加密过程是如何实现的?
这不是加密。
1, 汉字存储方式:Unicode (你需要知道编码方式)Unicode 中文对照表。 2, 汉字拼音对照表:中文拼音对照表 3, 实现数据最少量存储
dict-cn.json实现方式: 1, 所有拼音集合。 2, 所有字符岁对应拼音的位置+Unicode编码(用一个array存储两个内容使用的很巧妙,使用偏移量,因为中文中使用的Unicode大多数都是连续性的)
@1021683053 你这个是存储方式和解码原理,看源码 decode.js
可以理解,但是我想确认生成 dict-cn.json
的方式, 难道大神是按照这个逻辑,反编码加密的?
@yugasun 我说的是中文Unicode 有区间,按照字符区间最小值往上加,把所有字全部遍历一遍,可以得出dict-cn.json
dict-cn.json
实现方式:
相当于两个数组:
[0]: 字符编码起始,与保存拼音位置。(正数为拼音位置 , 负数为下一次中文编码偏移)
[1]: 所有拼音集合 与 [0] 的值一一对应。
按照这两个规则很容易生成。
你看了Decode.js 你应该会懂怎么生成。
@1021683053 非常感谢耐心解答,具体怎么,就是想知道大神自己的实现方式,为什么会使用这种加密方式,思路是什么? 不用加密,直接输出 decode.js
解密后的中文字典json岂不是更好?为什么还要加密一次,再解密?
包的体量是要考虑的,你这是给前端用的!
@yugasun
@1021683053 非常感谢,明白了~
@1021683053 正解
经过这样编码后,服务器开启 gzip 后 dict-cn.json 就只有 16kb 了
怎么将自己的数据换成项目中的大学?之后要怎么使用呢
看大神们聊天,小弟颇受震撼😂