aui/pinyin-engine

可能还可以优化的地方

xmflswood opened this issue · 4 comments

1.拼音做断字处理更符合搜索习惯
如:糖饼(tang bing) 现在输入 gb 也能搜到,可以在participle()的时候处理下

2.可能整个匹配算法(主要是做组合的时候,实际上是笛卡尔积?)需要做优化,这点现在也没什么好思路,只是看了下微信app能处理得非常好
pinyin-engine在处理长多音字的时候是存在问题的,比如:
‘曾大曾大曾大曾大曾大曾大曾大曾大曾大曾大曾大曾大’ (zeng ceng, da dai tai)这里总共20个多音字,有6^10次方个组合,会直接导致内存撑爆,浏览器卡死,在测试16个字的时候需要处理近一秒(chrome 61)

建议可以暂时限制处理的多音字的个数

aui commented

感谢建议,我考虑下优化

断字处理可能可以这么做?
participle 的时候处理成 ['tangbing', 'bing', 'tb', 'b']
接着handle

s = '-tangbing-bing-tb-b'
query的时候用s.indexOf('-‘ + keyword) 来判断

lomo1 commented

xi'an 试试 :(

发布了pinyin-match模块,解决了分词、长多音字串的问题,也请支持下~
pinyin-match