倒排索引、正排索引系列一

1. 搜索引擎简介

搜索引擎顾名思义就是:从千万设置亿、兆级别的数据中查询出自己想要的信息,比如:谷歌和百度

索引引擎最重要的是建立倒排索引和正排索引【不是必须的】

2. 倒排索引简介

  1. 倒排索引的名词解释

  • 单词【key】:搜索框中输入的关键词
  • 文档【doc】:搜索结果的基本信息,比如百度这样的搜索引擎,doc是一个一个带有特定信息【关键词,出现的次数,出现的位置.....】的网页;

如果是淘宝的搜索引擎,doc 就是一个一个包含特定信息【宝贝的id、宝贝的类目.......】的宝贝;当然key和doc 要有一定的相关性,这个是算法来计算的

  • 倒排索引项:每个doc 包含一些特定信息,就叫倒排索引项
  • 词典项:把我们搜索的单词叫词典项
  • 倒排索引表:肯定会有多个doc 包括一个单词,这样一个词典项+ 包括这个词典项的所有doc 构成 倒排列表
  • 倒排索引:数亿万级的倒排索引表构成倒排索引
  • 一般为了减少索引的数量和搜索的时间,在一个搜索引擎中往往按照不同的纬度分成多份倒排索引

下面是倒排索引的机构图:


  • 绑定关系:建立索引之前,手续要把用户常用的关键词统计出来,并按照这些词典项进行建立索引;如果是搜索广告要卖关键词,需要让广告主对关键词和doc 【网页、或者电商的宝贝】进行绑定,【当然这个绑定要有原则,需要算法计算相关性进行审批】绑定关系可以单独建立一个索引。
  • query result:用户输入的关键词中有很多是错误的或者在现有索引里面没有的,这是要把用户查询的关键词改成用户可能感兴趣的关键词比如用户输入 iphon   --> iphone  。

3. 正排索引简介

正排索引因为查询效率是O(n),所以用的不是很多;更多的时候是用于倒排索引的辅助作用;

正排索引用的场景:每个doc 里面的关键字基本是唯一的就是,如果建立倒排索引基本也是1个关键词对应一个doc;直接建立正排就可以了;正排索引建立起来简单。



4. 正排索引、倒排索引在搜索引擎的作用

  • 倒排所有主要的作用就是召回,正排索引的作用主要是排序(计算分数),获取dataid对应的detail信息
  • 对一个大型搜索引擎,召回只是最基本、最简单的功能,所以倒排index 只占整个搜索index的20%--30%;相反正排索引真正占70--80%(其中排序的正排又占大头)
  • 对于taobao 的搜索来说:key 对应的doc集合就是所有title里面包括了搜索key(分过词、纠过错的)的所有宝贝的集合
  • 正排索引主要是用来进行排序的

5. 搜索算法的架构理解

  • 首先你要获取搜索的数据源: (百度是爬虫,淘宝是db,微信应该是db或者hbase/hdfs)
  • 对数据进行打标: 又可以称之为商品库 [任何个商品(数据) 的属性,品牌,假货,各种tag 标志好]
  • 搜索算法进行排序: 采取算法模型: Score = L1R1 + L2R2 + .... + LkRk;最后对商品的分数进行排序
  • 如果所说对搜索关键词的理解:在搜索框输入一个关键词:要对关键词进行纠错 改写 分词 各种预测 最后把数据发给引擎
展开阅读全文

没有更多推荐了,返回首页