Skip to content

{ Monthly Archives } 九月 2009

关于音乐搜索

音乐搜索属于垂直搜索的一种,但它又有着自己独特的一些需求。 首先,几乎所有的音乐搜索都实现了用户输入时的关键词提示功能。但在网上搜索相关的技术文章,大多是讲如何用 Js 实现前台表现层的功能,少有的几篇关于后台技术实现的文章,也都太过简单。标准的办法是使用 Trie 树,但太过晦涩,不够直观。我们打算直接使用 Lucene 的前缀查询来实现,并且计划在项目上线后写一个比较详细的说明。 其次,很多的音乐搜索都提供了拼音查询的功能。比如说用户输入 “liudehua”,关键词提示里会给出 “刘德华”,但即使用户不理会提示,直接点击提交,在服务器端,还是可以查询到关于 “刘德华” 的条目。甚至,用户输入拼音首字母 “ldh”,都可以匹配到 “刘德华”。这主要是考虑到使用音乐搜索的用户群的特点(低龄?懒惰?互联网初级用户?),以及某些艺人的名字确实比较难拼写吧。技术上其实很简单,建索 引的时候,将歌曲名,歌手名等都转成拼音一并进行索引就可以了。唯一一点需要注意的地方在于,多音字的处理。 再次,有些搜索引擎,像 qq music,提供了同音字纠错的功能,可以在用户输入“周洁论”的时候,命中关于“周杰伦”的结果。有了上一步的拼音索引,这一步也很容易实现了。再多做 一步,考虑到南北方的口音差别,很多人 en 与 eng,zh 与 z,n 与 l 不分,在搜索过程中进行一些简单的替换,拼音模糊纠错功能也就水到渠成了。 最后,汉字的模糊搜索。我们常用的一个例子就是,用户输入“刘大华”,能否命中“刘德华”?技术上肯定是可以的,lucene 本身就提供这样的查询,只是在产品设计上,是否有代替用户思考的嫌疑呢?这就需要产品人员去仔细思量了。 前面说的是功能,后面说说排序。 最基础的排序当然是按文档匹配度,也就是 lucene 的 score 来排了。但是有时候编辑推荐的歌曲是一定要排前面的,这个比较好实现。可是点击率比较高的歌曲也要靠前排,这个就有点麻烦了,因为牵涉到频繁的字段更新,以及 boost 值的微调。 最麻烦的是上面说的那一堆的特殊处理。比如用户输入了一个词,精确匹配肯定应该排最前面了,没有精确匹配中文的,拼音全量匹配也可以,分词匹配,或 者部分匹配的结果次之,再接下来应该是前缀搜索,同音字纠错,模糊搜索的匹配条目。最开始的想法一直是多次搜索,可是在多次搜索里,一是无法控制所谓的精 确匹配;二是多次搜索打包的结果用于排序的时候,很麻烦;三则,多次搜索,本身的逻辑就非常复杂。不过今天学会一招,如果不考虑性能损耗,可以说是屠龙刀 级别的必杀技:打包多个 Query 对象,一次搜索!排序的问题,当然使用 Query.setBoost 解决了。至于精确匹配,冗余一个字段,不分词就行。 搭建好了 Hudson,写了一个看起来蛮复杂的 build.xml ,然后每天看着它自动的编译,测试,发布,还是有点成就感的。 开始写测试用例。一边写也一边在思考,搜索引擎项目该如何进行功能正确性的测试,又如何进行搜索结果好坏的评价呢?

生活琐碎

离职倒计时,三,二,一。 回想在手机之家的这半年,有两件事情是值得感谢的:一是转到了自己喜欢的方向:搜索,二是认识了一帮很好的同事。这大概都是在新浪,腾讯之类的大公 司里无法做到的吧。在大公司的流水线上,很少可以任由自己选择喜欢的方向,独当一面的历练,就更难得了。至于同事,很多时候就只是同事。新浪还好一些,因 为环境比较宽松,大家还可以有工作之余的生活时间,而腾讯,早晚的班车,按天安排的任务,让人觉得就像在一台上满发条的大机器中一样,被胁裹着往前,没有 了个人的存在。 Brightcove (http://www.brightcove.com/en/) 那种典型的外企风格,对纯粹做技术的人来说,诱惑力不是一般的大,是非常的大。开放式的办公室,开放式的开发团队,“找最强的人,做最好的产品”的理念, 说英语的机会,去美国的可能,都是非常吸引人的。可惜的是暂时没有开发工程师的职位,如果去,只能先做一段时间的测试工程师,明年再转。 大道信通那边还是一直在催,如果不出意外,周六可能就去成都了。十一直接从成都去广州。港澳通行证要 14 号才能拿到,而14号的时候,我已经不在北京了。 刚买的 T43,在经过e世界店家往 cpu 上涂了一层散热硅胶之后,仍然坚持“死机到底”。打电话过去,店家说可能是内存的问题,把两条512的换成一条1G的试试。厌倦了那些“可能”,“试 试”,直接要求换一台,顺便换成高分屏的。习惯了 1400*1050,再用 1024*800还真别扭。 妈妈和浩洋去了东莞。浩洋开始上幼儿园,据说只有第一天哭了一会,后面就不哭了。爸爸一个人在家,无聊得开始折腾猪圈了。 唐星星下周回东安。旭林搬到了清华的宿舍。唐芳和肖甜都忙。lily在遥远的广州。一个人下楼吃饭,站在桔红的路灯下,雨后的路上车来车往,忽然觉得有点孤单。