300万数据量的汉字拼音排序,能优化到什么程度呢?

楚山 发布于 2013/01/14 12:17
阅读 418
收藏 1

每个字符串通常是汉字字符串,也有可能夹杂少量英文数字字符,长度在0-128个之间

我目前的做法是先将所有汉字生成一个拼音排序队列,长度有2w多个

然后比较的时候直接解码,从队列中获取排列序号,再根据此排列序号按照通常字符串比较的方式来比较汉字字符串

排序使用qsort,比较函数是定制的比较函数

目前100w有4m,300w有8-9m

大家有没有更好的方法呢?

加载中
0
c
chaoyuezhe
我也期待........
0
Liuxd
Liuxd

在什么里面排序?mysql?solr?

按什么逻辑排序?

0
cut
cut
平衡搜索三叉树,使用对应的拼音串作为索引,汉字串作为内容,或者选择合适的汉字编码,汉字编码字码表按拼音排的那种,可以直接使用作为串索引,生成完三叉树后排序就完成,通过中序遍历得到有序序列,算数发杂度,单个元素插入,删除,查找,最高为log2(N)。之前我搞过30W词库的索引,生成,全检索,全删除都在300毫秒左右完成,从文件读到内存的时间是100毫秒左右,内存间拷贝时间30毫秒左右。中序遍历迭代器前段搞了个,性能还没测试,遍历完应该不会超过100毫秒。
0
楚山

获取拼音串也要消耗时间,win32上没有这个api

返回顶部
顶部