乐铺博客

记录乐铺成长中的故事与点滴 / 发掘生活中的创意与乐趣

按拼音排序TAG

2 comments, 8,709 Views

在解决 tag 排序的问题上,碰到一点麻烦,不过很有意思,和大家一起分享。
原因出在乐铺的所有 tag 列表页:http://www.loopo.cn/tags/

刚开始是按照 tag 数量的多少排序的,这样最简单,不过缺点就是没有“公平对待”每一个 tag,特别是用了 tag 云状显示结构以后,最大的 tag 在前面,最小的在后面,看起来很不舒服。

后台改成了按 tag 的 name 排序,在数据库中是直接 ORDER BY tagname 操作的,这里又体现出来了汉字的“优点”,英文里面,只要 order by 一下就会按 a-z 的顺序列出来了,汉字可不行,这样做顺序是打乱了,显示的效果也好一些了,不过缺点也显而易见:没有规律性。想找一个特定的tag比较困难。

再后台想到了按汉字的拼音排序的想法,搜索了一下,之前有收藏过一个函数可以把汉字转换为拼音的,原理是通过判断区位码的方法来实现简单的拼音转换的。在本地简单测试了一下,正要往上用的时候,又有麻烦了,原来这个转换是从gb2312到拼音的,乐铺上的用的编码是utf8格式的,死活转不过去。还好服务器有支持iconv函数,又通过 iconv 转换了一次,这才正常。

使用过程中发现存在的几点问题:

  • 1.有很多生僻字都不能正确转换,好像只有国标里的汉字才可以;
  • 2.多音字处理不好,有时候转换出来的拼音莫名其妙。

上面两点问题在应用中用其它办法弥补一下就可以了,等有更好的解决办法再说吧。嘿嘿!

补充:后来在PHPCLASS发现了一个更强大的类,Chinese Text Conversion,乐铺现在用的就是这个类。有兴趣的朋友可以下来研究一下。

UPDATE:2006年10月1日
今天发现了一个可以把 gbk 转换到拼音的类,感谢 hightman。
主页: http://php.twomice.net
源码及演示: http://scws.tguanlim.com/py/getpy.php

分享到:人人网开心网腾讯微博新浪微博豆瓣分享腾讯空间百度搜藏腾讯书签

作者:avenger

2006-04-26 at 11:02 下午

文章分类:开发中的点滴

1 分2 分3 分4 分5 分6 分7 分8 分9 分10 分 (No Ratings Yet)

2 Responses to '按拼音排序TAG'

Subscribe to comments with RSS or TrackBack to '按拼音排序TAG'.

  1. 云状排序的优点是一个排列上支持两个排序方式。排序的方式除了字体大小之外以及顺序之外,还可以用颜色。
    http://www.loopo.cn/tags/ 的页面似乎有点问题,CPU占用很大,慢,使用起来不是很舒服。可以看看http://1000tags.com/漂亮而且快。

    :)另外问一个问题,想了很久:
    TAG的链接我看到大部分的网站都直接采用http://url/tagname的方式,这也就意味着直接使用tagname作为条件查询,这个在标签(中文标签或者英文标签)数量多的时候难道不会有性能问题吗?为什么不采用ID关联呢?是考虑到URL可读性吗?还是有别的什么考虑?

    alore

    13 八 06 at 12:26 下午

  2. :)
    小BUG,发了上篇之后,发现回复中如果直接http://url的话,系统不会自动加上a的闭合元素。既然自动判断了http,为什么不做的更好一些呢?:)

    alore

    13 八 06 at 12:29 下午

Leave a Reply