搜索引擎工作原理解析

本篇文章从整个搜索引擎架构技术大框架方面来学习,搜索引擎工作原理。

1 搜索引擎基本模块

搜索引擎工作原理解析_第1张图片
搜索引擎工作原理解析_第2张图片

2 爬虫

网络爬虫(Web crawler),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,它们被广泛用于互联网搜索引擎或其他类似网站,可以自动采集所有其能够访问到的页面内容,以获取或更新这些网站的内容和检索方式。从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止。另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索;对于聚焦爬虫来说,这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。

相对于通用网络爬虫,聚焦爬虫还需要解决三个主要问题:
(1) 对抓取目标的描述或定义;
(2) 对网页或数据的分析与过滤;
(3) 对URL的搜索策略。
搜索引擎工作原理解析_第3张图片

3 Lucene

Lucene是一款高性能的、可扩展的信息检索(IR)工具库。信息检索是指文档搜索、文档内信息搜索或者文档相关的元数据搜索等操作。

搜索引擎工作原理解析_第4张图片
搜索引擎工作原理解析_第5张图片

4 搜索用户界面

随着搜索技术的逐渐走向成熟,搜索界面也有了一个比较固定的模式。除了基本的搜索,我们可能都会涉及到下面这些方面。
- 输入提示词:当用户在搜索框中输入查询过程中随时给予查询提示词。对于中文来说,当用户输入拼音的时候,也能提示。
- 相关搜索提示词:当用户对当前的搜索结果不满意时,也许换一个搜索词,就能够得到更有用的信息。一般会根据用户当前搜索词给出多个相关的提示词。可以看成是协同过滤在搜索词上的一个具体应用。
- 相关文档:返回和搜索结果中的某一个文档类似的文档。例如:Google搜索重的“类似结果”
- 在结果中查询:如果返回结果很多,用户肯定希望在当前的结果中进行一定的过滤搜索。
- 分类统计/搜索:返回搜索结果在类别中的分布图。用户可以按照类别缩小搜索范围,或者在搜索结果中导航。有点类似数据仓库中的向下钻取和向上钻取。
- 搜索热词统计界面:往往按照用户类别统计搜索词,例如按照用户所属区域或者按照用户所属部门等,当然也可以直接按照用户统计搜索热词。例如Google的Trends。

搜索界面的改进都是以用户体验为导向,具体的还需要根据应用场景优化。

5 计算框架MapReduce

首先让我们来重温一下 hadoop 的四大组件:
HDFS:分布式存储系统
MapReduce:分布式计算系统
YARN: hadoop 的资源调度系统
Common: 以上三大组件的底层支撑组件,主要提供基础工具包和 RPC 框架等

Mapreduce 是一个分布式运算程序的编程框架,是用户开发“基于 hadoop 的数据分析 应用”的核心框架
Mapreduce 核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的 分布式运算程序,并发运行在一个 hadoop 集群上

下面从一个统计文本单词数量的结构来了解MapReduce
搜索引擎工作原理解析_第6张图片
这些数据经过以下几个阶段

输入拆分:

输入到MapReduce工作被划分成固定大小的块叫做 input splits ,输入折分是由单个映射消费输入块。

映射 - Mapping

这是在 map-reduce 程序执行的第一个阶段。在这个阶段中的每个分割的数据被传递给映射函数来产生输出值。在我们的例子中,映射阶段的任务是计算输入分割出现每个单词的数量(更多详细信息有关输入分割在下面给出)并编制以某一形式列表<单词,出现频率>

重排 Shuffling

这个阶段消耗映射阶段的输出。它的任务是合并映射阶段输出的相关记录。在我们的例子,同样的词汇以及它们各自出现频率。

Reducing

在这一阶段,从重排阶段输出值汇总。这个阶段结合来自重排阶段值,并返回一个输出值。总之,这一阶段汇总了完整的数据集。

在我们的例子中,这个阶段汇总来自重排阶段的值,计算每个单词出现次数的总和。

6 文本挖掘

常用的文本挖掘方法包括:全文检索,中文分词,句法分析,文本分类,文本聚类,关键词提取,文本摘要,信息提取,智能问答。
搜索引擎工作原理解析_第7张图片

你可能感兴趣的:(java,web)