信息检索复习(10)——Web搜索

  • Web搜索结构


    信息检索复习(10)——Web搜索_第1张图片
  • 采集器(爬虫)必须提供的功能特点

    1. 鲁棒性
      Web中有些服务器会制造采集器陷阱,这些陷阱实际上是web页面的生成器,它能在某个域下生成无数网页,从而使采集器陷入到一个无线的采集循环中去。采集器必须要能从这类陷阱中跳出来。当然,这些陷阱不一定是恶意的,有时可能是网页设计疏忽导致的。
    2. 礼貌性
      Web服务器具有一些隐式或显式的政策来控制采集器访问它们的频率。设计采集器时必须要遵守这些代表礼貌性的访问策略。(遵守robots.txt ,只访问允许的网站)
  • 采集器应该提供的功能特点

    • 分布式
    • (规模)可扩展性
    • 性能和效率
    • 质量
    • 新鲜度
    • (功能)可扩展性
  • 采集器的架构

    1. 待采集URL池
    2. DNS解析模块
    3. 抓取模块
    4. 分析模块
    5. URL 去重模块
  • URL采集池

    • 支持优先级处理并遵循礼貌性访问原则
    • 两个主要子模块:F个前端队列集合,B个后端队列集合
    • 满足先进先出原则
    • 前端队列主要实现优先级访问功能,而后端队列实现礼貌性访问功能
    • 首先,优先级分配器会基于URL的抓取历史赋给该URL一个整数i表示其优先级,其中i的取值在1到F之间。比如给一篇变化更频繁的文档分配更高的优先级。
      B个后端队列中的每个队列维持下列固定情况:(1)当采集正在进行时,队列不会为空(2)队列只包含来自单个主机的URL。使用一个辅助表T来维护从主机到后端队列的映射。当某个后端队列为空并从前端队列重新填充时,T必须进行相应的更新。
      维护一个堆队列,其中的每个元素对应一个后端队列,元素值为该队列对应的主机重新访问的最早时间te。
      某个采集线程在请求URL池的一个URL时,会从上述堆中取出其根节点,并且等待相应时间te。然后,从根节点对应的后端队列j中取出队列首部的URLu,并指令u的抓取操作。采集u后,条用线程会检查j是否为空。如果为空,则选择一个前端队列并去除该队列的首部URLv。在选择前端队列时会倾向于高优先级队列(通常有一个随机过程来实现),即保证高优先级URL能更快流入到后端队列中。对于URLv,我们会检查在某个后端队列中是否已包含了来自同一主机的URL。如果存在,那么v就会加入该队列中,这样我们就需要重新回到前端队列来寻找另外一个候选URL插入到现在为空的队列j中。该过程不断继续指导j不再空。任何情况下,对队列j,线程都会基于其中上次采集的URL属性在队中插入一个新的最早访问时间te。
  • Web网页的重复问题

    • 检测重复最简单的方法:为每个网页计算出一个指纹,它是整个网页文本的一个很精炼的摘要。
    • 对于Web的近似重复的现象:搭叠技术(shingling)

你可能感兴趣的:(信息检索复习(10)——Web搜索)