# 搜索引擎理论讲解

搜索引擎，通常指的是收集了万维网上几千万到几十亿个网页并对网页中的每一个词（即关键词）进行索引，建立索引数据库的全文搜索引擎。当用户查找某个关键词的时候，所有在页面内容中包含了该关键词的网页都将作为搜索结果被搜出来。再经过复杂的算法进行排序(或者包含商业化的竞价排名、商业推广或者广告)后，这些结果将按照与搜索关键词的相关度高低（或与相关度毫无关系），依次排列。

## 概述

在搜索引擎的后台，有一些用于搜集网页信息的程序。所收集的信息一般是能表明网站内容（包括网页本身、网页的URL地址、构成网页的代码以及进出网页的连接）的关键词或者短语。接着将这些信息的索引存放到数据库中。

搜索引擎的系统架构和运行方式吸收了信息检索系统设计中许多有价值的经验，也针对万维网数据和用户的特点进行了许多修改，如右图所示的搜索引擎系统架构。其核心的文档处理和查询处理过程与传统信息检索系统的运行原理基本类似，但其所处理的数据对象即万维网数据的繁杂特性决定了搜索引擎系统必须进行系统结构的调整，以适应处理数据和用户查询的需要。 \[

![](/files/-LtdvAMYXSc01nWDEKbz)

![](/files/-LtdvAM_OU2D99psjmjt)

搜索引擎原理

## 工作原理

**爬行和抓取**

搜索引擎派出一个能够在网上发现新网页并抓文件的程序，这个程序通常称之为蜘蛛（Spider）。搜索引擎从已知的数据库出发，就像正常用户的浏览器一样访问这些网页并抓取文件。搜索引擎通过这些爬虫去爬互联网上的外链，从这个网站爬到另一个网站，去跟踪网页中的链接，访问更多的网页，这个过程就叫爬行。这些新的网址会被存入数据库等待搜索。所以跟踪网页链接是搜索引擎蜘蛛（Spider）发现新网址的最基本的方法，所以反向链接成为搜索引擎优化的最基本因素之一。搜索引擎抓取的页面文件与用户浏览器得到的完全一样，抓取的文件存入数据库。

**建立索引**

蜘蛛抓取的页面文件分解、分析，并以巨大表格的形式存入数据库，这个过程即是索引（index).在索引数据库中，网页文字内容，关键词出现的位置、字体、颜色、加粗、斜体等相关信息都有相应记录。

**搜索词处理**

用户在搜索引擎界面输入关键词，单击“搜索”按钮后，搜索引擎程序即对搜索词进行处理，如中文特有的分词处理，去除停止词，判断是否需要启动整合搜索，判断是否有拼写错误或错别字等情况。搜索词的处理必须十分快速。

**排序**

对搜索词处理后，搜索引擎程序便开始工作，从索引数据库中找出所有包含搜索词的网页，并且根据排名算法计算出哪些网页应该排在前面，然后按照一定格式返回到“搜索”页面。

再好的搜索引擎也无法与人相比，这就是为什么网站要进行搜索引擎优化。没有SEO的帮助，搜索引擎常常并不能正确的返回最相关、最权威、最有用的信息。

## 数据结构

搜索引擎的核心数据结构为倒排文件（也称倒排索引），倒排索引是指用记录的非主属性值(也叫副键)来查找记录而组织的文件叫倒排文件，即次索引。倒排文件中包括了所有副键值，并列出了与之有关的所有记录主键值，主要用于复杂查询。 与传统的SQL查询不同，在搜索引擎收集完数据的预处理阶段，搜索引擎往往需要一种高效的数据结构来对外提供检索服务。而现行最有效的数据结构就是“倒排文件”。倒排文件简单一点可以定义为“用文档的关键词作为索引，文档作为索引目标的一种结构（类似于普通书籍中，索引是关键词，书的页面是索引目标）。

## 全文搜索引擎

在搜索引擎分类部分我们提到过全文搜索引擎从网站提取信息建立网页数据库的概念。搜索引擎的自动信息搜集功能分两种。一种是定期搜索，即每隔一段时间（比如Google一般是28天），搜索引擎主动派出“蜘蛛”程序，对一定IP地址范围内的互联网站进行检索，一旦发现新的网站，它会自动提取网站的信息和网址加入自己的数据库。

另一种是提交网站搜索，即网站拥有者主动向搜索引擎提交网址，它在一定时间内（2天到数月不等）定向向你的网站派出“蜘蛛”程序，扫描你的网站并将有关信息存入数据库，以备用户查询。由于搜索引擎索引规则发生了很大变化，主动提交网址并不保证你的网站能进入搜索引擎数据库，因此目前最好的办法是多获得一些外部链接，让搜索引擎有更多机会找到你并自动将你的网站收录。

当用户以关键词查找信息时，搜索引擎会在数据库中进行搜寻，如果找到与用户要求内容相符的网站，便采用特殊的算法——通常根据网页中关键词的匹配程度，出现的位置/频次，链接质量等——计算出各网页的相关度及排名等级，然后根据关联度高低，按顺序将这些网页链接返回给用户。

## 目录索引

与全文搜索引擎相比，目录索引有许多不同之处。

首先，搜索引擎属于自动网站检索，而目录索引则完全依赖手工操作。用户提交网站后，目录编辑人员会亲自浏览你的网站，然后根据一套自定的评判标准甚至编辑人员的主观印象，决定是否接纳你的网站。如果审核通过，你网页才会出现于搜索引擎中，否则不会显示。

其次，搜索引擎收录网站时，只要网站本身没有违反有关的规则，一般都能收录成功。而目录索引对网站的要求则高得多，有时即使登录多次也不一定成功。

此外，在登录搜索引擎时，我们一般不用考虑网站的分类问题，而登录目录索引时则必须将网站放在一个最合适的目录。

最后，搜索引擎中各网站的有关信息都是从用户网页中自动提取的，所以用户的角度看，我们拥有更多的自主权；而目录索引则要求必须手工另外填写网站信息，而且还有各种各样的限制。更有甚者，如果工作人员认为你提交网站的目录、网站信息不合适，他可以随时对其进行调整，当然事先是不会和你商量的。

目录索引，顾名思义就是将网站分门别类地存放在相应的目录中，因此用户在查询信息时，可选择关键词搜索，也可按分类目录逐层查找。如以关键词搜索，返回的结果跟搜索引擎一样，也是根据信息关联程度排列网站，只不过其中人为因素要多一些。如果按分层目录查找，某一目录中网站的排名则是由标题字母的先后顺序决定（也有例外）。

目前，搜索引擎与目录索引有相互融合渗透的趋势。原来一些纯粹的全文搜索引擎现在也提供目录搜索。

## 元搜索引擎

元搜索引擎(MetaSearchEngine)不是一种独立的搜索引擎，它最显著的特点是没有自己的资源索引数据库，是架构在许多其他搜索引擎之上的搜索引擎。元搜索引擎在接受用户查询请求时，可以同时在其他多个搜索引擎中进行搜索，并将其他搜索引擎的检索结果经过处理后返回给用户。元搜索引擎为用户提供一个统一的查询页面，通过自己的用户提问预处理子系统将用户提问转换成各个成员搜索引擎能识别的形式，提交给这些成员搜索引擎中，然后把各个成员搜索引擎的搜索结果按照自己的结果处理子系统进行比较分析，去除重复并且按照自定义的排序规则进行排序返回给用户。所以，一般的元搜索引擎都包括三大功能结构：提问预处理子系统、检索接口代理子系统和检索结果处理子系统。 \[2]


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://tuonioooo-notebook.gitbook.io/mass-data-lucene/di-ceng-lucene-ff08-lu-sen-ff09/sou-suo-yin-qing-li-lun-jiang-jie.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
