中间件 - 搜索引擎架构细节

搜索引擎架构 + 检索需求方案演进

一、宏观

  1. 全网搜索引擎,三大模块:spider,index,rank
    在这里插入图片描述
  2. spider + index:工程系统,各大搜索引擎比如百度和谷歌,都是差不多的。
  3. rank:业务策略系统,这个不同的搜索引擎不一样。
  4. 搜索结果的好坏,核心在rank

二、实时搜索引擎

架构核心:

  1. 索引分级
  2. dump & merge

实施要点:

  1. 实时定点写
    在这里插入图片描述

  2. 实时分段读
    在这里插入图片描述

  3. 异步导出合并
    在这里插入图片描述

三、微观

  1. 正排索引:url_id快速找到list<item>

  2. 倒排索引:分词item快速找到list<url_id>

  3. 检索过程:先分词,再找item对应的list<url_id>,最后求交集

  4. 有序集合求交集:
    a.二重for循环,时间复杂度O(n^2)
    b. 拉链法,时间复杂度O(n)
    c. 水平分桶,多线程并行
    d. bitmap,大大提高运算并行度,时间复杂度O(n)
    在这里插入图片描述

    e. 调表,时间复杂度O(log(n))

四、满足检索需求

  1. 原始阶段 - LIKE
  2. 初级阶段 - mysql的全文索引
  3. 中级极端 - 开源外置索引,比如ES、Solr、Lucene
  4. 高级阶段 - 自研搜索引擎
    在这里插入图片描述

五、参考

  1. https://blog.csdn.net/qijiqiguai/article/details/78702506

猜你喜欢

转载自blog.csdn.net/hudmhacker/article/details/108106442