搜索有两个主要阶段:匹配和排名。搜索引擎将二者组合成一个流程以实现一致性。但是这两个在概念上是独立的,我们假设在排名之前已经完成了匹配。

并且一个搜索引擎的生死由其排名的质量决定。

还是老规则,问题三部曲。是什么?为什么?怎么办?

首先来回答一下是什么?

什么是匹配?

假设我现在搜索的是“伦敦公共汽车时刻表”,那么匹配就是搜索整个互联网中包含该字段的网页。匹配阶段也就是回答了“哪个网页与我的查询匹配”。

具体实例见下图:

其次说说为什么匹配?

为一个给出的查询高效地找出所有命中问题。

最后说说怎么匹配?

在说到怎么匹配之前,先来了解一下,什么是索引?

“索引”这个词通常指参考书的最后一个版块。你可能查找所要的概念以固定顺序(通常按字母排序)排列,每一个概念下都列出的具体出现的位置(通常以页码形式出现)。

就像是“cat 124, 523”的索引项。意味着“cat”这个词在第124,页和第523页中出现过。

下面给出三张图,假设这三张图片就是互联网上的三个网页。

1.2.3.

一个用页码表示的简单索引表

a--表示在第3张表中出现

the---表示在第1、2、3张表中出现

以此类推。

在搜索cat 、dog、 while等单词时,搜索引擎可以很快的查找到,但是在实际所搜中,却很难一个词搜索,往往事词语或词组搜索,假设我现在要搜索的是cat sat和“cat sat”.

(注意:这里有无引号的区别)。首先看第一项,搜索引擎很快就搜索到cat和sat在第1、3页出现了。现在搜索第二项,那么搜索引擎首先会搜索含有cat 和sat的页面,这里出现在第1页和第3页,但此时,搜索就卡住了,它不知道具体的顺序是如何?谁在前谁在后?

如何解决这个问题?利用“词把戏”解决。

解决思路:索引不单单只存储页码,还要存储页面内的位置。位置:它们代表了一个词在页面中的位置。比如:第3个词的位置是3,第29个词的位置是29.

那么将以上的三个图以及索引表改为:

123

a--表示在第3页第5个位置

cat--表示在第1页第2个位置,第3页第2个位置

以此类推。

那么我们开始寻找词语“cat sat”,通过查看索引信息("cat":位置:1-2   3-2, “sat”:位置:1-3    3-7)(注意:这里是查看索引就知道位置,而不用查看原始网页)

那么,3-2=1,7-2=5.便知道了"cat sat"之间连在一起的词是在第1个网页。

“词把戏”解决的不仅是短语查询之间的搜索,而且是相邻词语搜索的重要手段之一。一般在查询相邻词五个相邻位置左右。

讲完匹配之后,再来说说排名。

还是一样,首先解决的是,什么是排名?生活中很多例子,考试排名第一,体侧排名最后等等,和生活中的事例一样,只不过互联网中的排名我们看不到而已(这里指普通用户)。

其次解决为什么要排名?挑选出前几个命中并展示给用户的阶段。“排名”对于一个高质量的搜索引擎的绝对不可少的。

怎么排名?其实也就是,排名取决于什么?

真正的问题不是“这个网页和查询匹配吗”,而是“这个网页和查询是否相关”。这里用“相关度”来描述网页与查询相关的紧密程度。

还是用例子来说明:

1.2.

假设现在查询的是  cause malaria(导致疟疾),那么1.中是导致疟疾的相关原因,但是2.中只是恰巧有cause和malaria,但是两个网页都同时命中了,这时候,搜索引擎该怎么分辨出,那个是我们所需要的?

解决方案:“原词把戏”

要想搜索引擎一样分析网页结构。网页结构是以HTML来编写的,包含着大量的标签(tag),那么通过分析这些标签到做到搜索。

那么为什么所要分析网页结构来达到我们的目的。

因为文章的标题。往往一篇文章的标题便是这篇文章的中心大意以及标题的文字往往是我们要搜索的内容,这比起在文章中偶尔出现一两个单词更具有搜索价值。

还是以匹配阶段举得例子为例:

<bodyEnd>  1-12    2-12   3-13

<bodyStart>1-5   2-5   3-5

<titleEnd> 1-4  2-4   3-4

<titleStart>  1-1   2-1   3-1

其他类推。。

假如现在我要查询dog在标题中的网页,那么该如何做呢?

找到了<titleStart>  1-1   2-1   3-1和<titleEnd> 1-4  2-4   3-4以及dog  2-3   2-7   3-11

那么搜索引擎便会查找以“1-”开头的索引,在start以及end之间的便是我们要查找的内容。

例如:1-1    1-4,再搜索dog中的索引,没有“1-”开头的,那么继续往下搜索索引值,2-1      2-4  ,再搜索dog中,发现有“2-"开头,那么判断"2-?"中的?是否在   1<x<4范围之间,发现3处于1~4之间,那么便命中,依次往下搜索。

注意的是:搜索引擎每次都只是查询小部分索引项,就能回应查询,并且搜索引擎只需遍历每个索引项一次。

索引和匹配并非是全部内容,下一篇将会带来PageRank算法--让谷歌腾飞的技术。

http://blog.csdn.net/l_rollback/article/details/52764861

改变世界的9大算法--搜索引擎索引相关推荐

  1. 改变世界的9大算法--PageRank

    "PageRank"一语双关:既是网页排名的算法,也是该方法的主要发明者 拉里 ▪ 佩奇. 首先来了解一下"超链接把戏".超链接,在1945年就已经出现了,是搜 ...

  2. 聊聊改变世界的5大算法

    领关注.星标嵌入式客栈,干货及时送达 [导读] 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制.周末了,今天来轻松概 ...

  3. 扒一扒改变世界的十大算法

    Reddit有篇帖子介绍了算法对我们现在生活的重要性,以及哪些算法对现代文明所做贡献最大.这个表单并不完整,很多与我们密切相关的算法都没有提到,如机器学习和矩阵乘法,欢迎你继续补充. 如果对算法有所了 ...

  4. 面向大数据的索引结构研究进展

    面向大数据的索引结构研究进展 严赵峰, 张为华 复旦大学并行处理研究所,上海 201203 摘要:为了保证各类大数据系统的性能,以并发索引结构为核心的高效检索技术变得越来越重要.然而,数据存储体量的增 ...

  5. 教你如何用 Python 来实现一个大数据搜索引擎

    搜索是大数据领域里常见的需求.Splunk和ELK分别是该领域在非开源和开源领域里的领导者.本文利用很少的Python代码实现了一个基本的数据搜索功能,试图让大家理解大数据搜索的基本原理. 布隆过滤器 ...

  6. 十大算法,描述+代码+演示+分析+改进(赶紧收藏!)

    十大算法 1.冒泡排序 ​ (1)算法描述 ​ 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来.走访数列的工作是重复地进行直到没有再需要 ...

  7. java培训:Java的十大算法

    想要学好java语言,就要打好基础,java要学习的东西有很多,今天小编就来和大家说下java的十大算法. 算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个 ...

  8. 编程界称霸全球的10大算法,你到底了解几个呢?

    来源:课程图谱博客 本文约2300字,建议阅读9分钟 本文带你了解编程界称霸全球的十大算法. 算法究竟是什么? 简而言之,算法代表经过明确定义的计算过程,用于将输入转化为输出. 可以这样理解,算法是用 ...

  9. 编程面试过程中最常见的10大算法

    编程面试过程中最常见的10大算法 编程语言:C/C++ 1. 字符串 如果IDE没有代码自动补全功能,所以你应该记住下面的这些方法. toCharArray() // 获得字符串对应的char数组 A ...

最新文章

  1. OpenSource的开发模式探讨
  2. Python爬虫(十一)_案例:使用XPath的爬虫
  3. getBoundingClientRect的用法
  4. 手里的基金在震荡?数据解读2021“开门红”如何控制仓位
  5. python如何自动打印_利用Python每天自动打印练习题
  6. JAVA8如何进行IDEA配置_IntelliJ Idea 配置jdk8
  7. LeetCode 792. 匹配子序列的单词数(二分查找)
  8. matlab中float类型的_Java局部变量类型推断(Var类型)的26条细则
  9. 43岁被裁员,200万年薪泡汤:这4件事你要尽早明白
  10. journalctl -xe mysql_journalctl 日志查看方法
  11. GAMBIT FLUENT 简要介绍
  12. 计算机专业及课程设置,清华及各大高校公布计算机专业培养方案课程
  13. iOS 史上最全App上架流程分享
  14. 如何让生活充满充实感
  15. 看Farewell, Wicresoft有感
  16. 数据恢复中的“老大难”:文件碎片 | 专家约稿
  17. 【CDN】- 什么是CDN
  18. Win764位系统下使用ObRegisterCallbacks内核函数来实现进程保护
  19. 论文: 基于智能优化算法的测试数据生成综述
  20. iOS oc 手机摇一摇震动带音效功能

热门文章

  1. 收到一个QQ尾巴传来的文件(第2版)
  2. win7需要计算机管理员权限,Win7系统提示“需要管理员权限”该如何解决?
  3. bugku平台 头等舱
  4. 英语语法(5) 形容词和副词之二
  5. 精品丨CALCULATE函数进阶版知识
  6. 使用音频信息绘制动态波纹
  7. (十八)享元模式详解(都市异能版)
  8. Java虚拟机知识框架图
  9. springboot的那么一套
  10. 深入理解Java虚拟机-虚拟机执行子系统