搜索架构概要

 2005年的老博,转到此空间来

讲座来源:www.matrix.org.cn

    对一个搜索引擎来讲, 比较传统的架构会是这样的:  crawler  -  index engine - search engine. crawler就是一个不断从网上将网页抓下来的一个引擎,如百度的spider,trs的雷达. index engine是一个索引引擎. search engine就是检索引擎.

<一> crawler
【关键技术】
 1.分布式,多线程抓取.任务的调度问题.  
    2.网页重要性的评估, crawler不会把所有网页都抓下来,只会抓20%的网页下来,因此必须评估网页的重要性.一般,评估技术会用到page rank算法.
    3.refresh policy. 每经过一段时间,crawler都必须更新网页,从而保证索引的网页是最新的网页。最简单的更新策略就是把所有网页重新下载一次,但是这个耗费的时间起码是一个月
    4.压缩算法,Crawler抓下来的东西,分布式的存储在本地。要一个优秀的压缩机制来减少总的存储容量。将来在各个数据服务器间传输数据都需要一个优秀的压缩算法,从来减少通讯带来的带宽负担。

<二> index engine
    对存储进行索引就是Index engine要做的事情。这里索引都是指完全的全文索引,而不是只对字的索引,或者只对词的索引。有些国内的检索引擎是对字的索引或者对词的索引,或者两者的结合。
【关键技术】
    1.一般来讲,因为数据量是很大,所以索引的容量也会很大,数据量和索引量的比例一般会是1:1。所以,索引的存储也会是分布式的。最简单的索引就是倒排索引,lucene就是用的这个.
    2.Index engine 必须支持增量索引,而且增量索引速度应该很快。这个问题,通常的解决方法,是为新增的数据新建一个新的索引块,然后在一定时间,将这个新的索引块并入旧的索引块。比如lucene里就是这么做的。
    3.索引有一个压缩的问题,因为通常数据量和索引量的比例会是1:1,如果压缩算法做的比较好的话,应该可以得到更好的一个比例。lucene这方面做的比较一般.
    4.多语言的问题,索引必须支持多语言.现在unicode可以很好的解决这个问题
    5.索引的结构还必须为检索,相似性分析,等等提供良好的计算接口.比如google和baidu的类似网页,为了很快找到类似网页,这些数据也必须放到索引里面去.
    6.当然,支持doc,excel,ps 等多种文件格式,这个是基本的东西了

<三> search engine
    索引建好之后,就是为了search 服务了.通常流程是这样的,用户发出请求 <-> search engine<-> index server
【关键技术】
    1. 检索结果的排序问题,这个其实前面的page rank做了很多铺垫的,一些新的尝试,比如对用户偏好的分析之类的,都可以运用在这里,对不同偏好的用户采用不同的排序策略
    2.检索结果的排重问题,就是排除重复的结果.
    3.检索结果的相似性分析问题
    4.检索的速度问题.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值