实时搜索之微博(百度技术沙龙开放空间环境讨论主题)

实时搜索之微博         

                          [文章作者:孙立 链接:http://www.cnblogs.com/sunli/ 更新时间:2010-08-18]
        8月14日下午参加了infoq和百度共同举办的技术沙龙,主题是“走进搜索核心技术”,这也是我第一次参加infoq的聚会,感觉非常不错,不但免费,而且内容质量非常高,活动形式也非常的好,不幸的是回来后感冒发烧了。最后的OpenSpace(开放空间)环节,我所在组讨论了“实时搜索之微博”,非常荣幸我这次被选为组长上台给大家介绍了下,为了方便其他人,我就把讨论的结果记录下来了。
        要构建一个基于微博的实时搜索,我们就必须选取一定的微博内容作为我们的基础。我们分为了三种类型:全网、站内,特殊。基于内容我们分为:微博内容,人和人的关系
       全网微博搜索可以通过统一提供的api获取数据,如没有api也可以进行spider爬取。如果决定针对不同的微博爬取的频率呢?百度的朋友讲的百度的实时搜索评价实时源的一些判断方式,那么微博可以通过flow人数和微博被转发的次数,发表的频率来决定微博的重要性,那么就可以决定我们对这个微博爬取的频率。
      全网微博搜索爬取回来的内容也有一些特点,单条内容数据小,数据一旦发表就不再更新,有删除(对应百度的死链接处理),在当前国内的条件下,做全网搜索可能风险很大,对于言论的审核是个很大的问题。
      站内的微博搜索获取数据比全网搜索要容易很多,暴力点就直接从数据存储(nysql,nosql什么都行)那里拿就可以了,还可以通过接口进行触发式的更新。

      还有就是人和人的关系的获取可以通过follow和被follow的list页面获取。
      对于获取到了数据的后续处理步骤:
      1.过滤处理,去除无用信息,spam信息,重复信息。
      2.百度,goole他们会有一套自己的pagerank算法,那么微博呢?我们组定义了一个follow-rank,它表示 follow,被follow,被转发,发表频率计算出来出来的一个rank值。最终的搜索结果还要结合时间,因为是实时搜索。
      3.人的处理,我们觉得搜索人出来,应该是一个图,一个关系图,像一个拓扑图,星状图类似的。或者搜索一个人,比如“李开复”,可以显示出我可以通过那些最近的关系找到他。
      实时索引处理
     跟百度的方法类似,根据时间段进行分段,当前索引段,近期,早期的(百度把当前索引库叫做流式库)。当前索引是构建在内存中的,以保证索引的性能,根据时间段定期进行合并到近期,早期。在搜索的时候同时并发的查询三个索引库,然后对结果进行merge.

      最新版本的sphinx也已经支持实时索引,有兴趣的朋友可以尝试下,这也说明实时搜索正成为趋势。
      附说明:
      百度当天的主讲嘉宾:殷庆轩在这个环境也分享了实时搜索(怎么利用微博做实时搜索),他提到的怎么挖掘价值,这点我个人觉得非常的好和非常的有用。通过对微博的实时内容进行数据挖掘,我们可以很快的获取到用户的关注热点,兴趣取向,任何行为的趋势等等,利用这些信息,可以做什么有用,有价值的东西出来。
posted @ 2010-08-18 13:39 草屋主人 阅读(...) 评论(...) 编辑 收藏