65.9K
CodeProject 正在变化。 阅读更多。
Home

搜索框架

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.75/5 (7投票s)

2009年4月9日

CPOL

16分钟阅读

viewsIcon

37765

不同搜索引擎如何工作并实现相同功能。

引言

信息是每个业务的支柱;我们依赖信息。如果能及时找到,并且在别人发现并呈现它之前找到,那么所有事实和数据就成为信息。否则,所有这些事实和数据都将证明只是毫无意义的数据。当我们拥有大量目录,即所有这些信息都可用的网络时,这一点就变得更加重要,唯一要做的就是快速及时地找到它。

各项研究表明,一名员工将四分之一的时间花在搜索所需信息上。这进一步导致:

  • 投资回报率(ROI)下降
  • 效率低下
  • 错失机会,新业务
  • 不恰当的商业决策

上述并非唯一影响,相反,其影响可能会波及整个企业。

现在我们来讨论可以实施的解决方案,以这样一种方式安排数据和事实,使所有需要信息的利益相关者能够随时快速获取。我们将讨论一些要点,这些要点将确保信息可用性的关键要素,例如:

  • 必须尽快可用。
  • 必须是最新和已更新的。
  • 必须可供目标用户使用。
  • 必须通过内网和互联网可用。

为确保以上所有要点,我们需要借助网络上可用的不同搜索引擎。在这里,我们将讨论与搜索相关的不同主题。为了便于理解“搜索”一词,我们将本文档分为以下几个部分:

  • 什么是搜索?
  • 什么是搜索引擎?
  • 搜索引擎的类型
  • 搜索引擎如何工作?
  • 什么是 robot.txt 文件?
  • 什么是站点地图?
  • 搜索引擎如何对网页进行排名?
  • 在 Google 中添加您的网站的步骤?
  • 创建网站以实现快速可靠搜索时需要记住的要点
  • 一些有用的搜索技巧
  • 需要改进的地方?

什么是搜索?

搜索是对信息的有组织追求。在文档、网页和其他来源的集合中,您想要找到一些信息,但您不知道它在哪里。您通过发出查询来执行搜索,这只是一种提问方式,可以找到您正在寻找的信息。搜索通常是一个迭代过程。您提交一个查询,如果结果列表不包含您正在寻找的信息,您将优化查询,直到找到包含答案的页面。

什么是搜索引擎?

网页搜索引擎是一种旨在搜索万维网信息的工具。搜索结果通常以列表形式呈现,通常被称为“点击”。信息可能包括网页、图像、信息和其他类型的文件。一些搜索引擎还挖掘新闻书籍、数据库或开放目录中可用的数据。与由人工编辑维护的网页目录不同,搜索引擎通过算法运行,或结合了算法和人工输入。

搜索引擎的类型

尽管“搜索引擎”一词既指**基于爬虫的搜索引擎**也指**人工驱动的目录**,但两者之间存在显著差异。

**基于爬虫的搜索引擎**会抓取或蜘蛛式抓取网页并将其存储在搜索引擎的索引中。此索引有时被称为目录,其中包含爬虫找到的所有网页。如果网页有任何更新,此目录也会随新信息一起更新。不同的站点有自己的抓取时间表,这决定了爬虫何时更新索引。有时,用户可能无法获取更新的信息,原因是网页可能已被抓取,但在您点击搜索时尚未编入索引。

搜索引擎是一个程序,它通过索引中存在的数百万个页面查找信息,以查找用户提供的搜索条件,并按照其认为最相关的顺序进行排名。

另一种是人工驱动的目录。网站所有者需要为您的整个网站向目录提交一份简短描述。然后,搜索只会在提交的描述中查找确切的匹配项。您网站的任何更新或更改都不会影响您的列表。

在网络早期,搜索引擎会以基于爬虫或人工驱动的目录形式呈现结果。然而,今天,这两种类型的结果一起呈现已经非常普遍。

例如,MSN 搜索更倾向于显示来自 *LookSmart* 的人工生成列表。但是,它也会显示基于爬虫的结果(由 *Inktomi* 提供),特别是对于更晦涩的查询。

  • LookSmart通过其搜索广告网络,向文本广告商提供搜索广告产品和服务,以及有针对性的按点击付费搜索和上下文广告。它向微软提供目录和列表服务。

  • Inktomi Corporation 是一家为互联网服务提供商提供软件的加州公司,于 2002 年被雅虎收购。

搜索引擎如何工作?

Google_Query.JPG

尽管每个搜索引擎都有自己的实现方式,但通常一个搜索引擎有四个部分。

  • 抓取
  • 索引
  • 搜索算法
  • 用户界面

**抓取**是搜索引擎用于访问网络上可用网站内容并向搜索引擎索引器提供这些内容的过程。这些抓取工具还可以用于自动化网站上的一些维护活动,例如验证参考链接和 HTML 代码。此外,抓取工具还可以用于从网页收集特定类型的信息,例如收集电子邮件地址(通常用于垃圾邮件)。抓取工具使用站点地图文件来发现要抓取的网站 URL。Googlebot 是用于查找和获取网页的谷歌网络爬虫。

**索引** - 一旦网络爬虫抓取了数据,搜索引擎索引就会收集、解析和存储数据,以便快速准确地检索信息。流行的搜索引擎专注于对在线自然语言文档进行全文索引。视频、音频和图形等多媒体类型也支持搜索。基于缓存的搜索引擎会将索引与语料库一起永久存储。

**搜索算法**——这才是真正的秘诀。这是每个搜索引擎都有自己实现方式的部分。这就是为什么相同的查询在不同的搜索引擎上可能会为您提供不同的结果。我们可以以谷歌的查询处理器为例,它负责获取结果并将其提供给最终用户。谷歌查询的生命周期通常不到半秒,但却涉及许多不同的步骤,这些步骤必须在结果交付给寻求信息的人之前完成。

PageRank 是 Google 用于对网页进行排名的系统。PageRank 较高的页面被认为更重要,并且更有可能排在 PageRank 较低的页面之前。Google 在计算 PageRank 和确定哪些文档与查询最相关时会考虑一百多个因素,包括页面的受欢迎程度、搜索词在页面中的位置和大小,以及搜索词在页面上的相互接近程度。

Google 还应用机器学习技术,通过学习存储数据中的关系和关联来自动提高其性能。例如,拼写纠正系统就使用此类技术来找出可能的替代拼写。Google 严密保护其用于计算相关性的公式;它们会进行调整以提高质量和性能。

谷歌分享了其算法的一般事实;具体细节是公司的秘密。这有助于谷歌在与网络上其他搜索引擎的竞争中保持竞争力,并减少有人发现如何滥用系统的机会。

**用户界面**——这是所有查询结果的显示位置。搜索结果页面可能包含标题、摘要、结果 URL 和大小等强制性信息。可选信息可能包含 Google 徽标、统计栏、提示、赞助页面、拼写更正、词典定义、缓存、相似页面、新闻、产品信息、翻译、书籍结果等。

Google_Search_Example_1.JPG

什么是 robot.txt 文件?

网站上的 robots.txt 文件将作为请求,要求指定的机器人忽略其搜索中指定的某些文件或目录。这可能是出于对搜索结果隐私的偏好,或者认为所选目录的内容可能对网站整体分类具有误导性或不相关,或者希望应用程序仅对特定数据进行操作。

对于有多个子域的网站,每个子域都必须有自己的 robots.txt 文件。如果 example.com 有 robots.txt 文件但 a.example.com 没有,那么适用于 example.com 的规则将不适用于 a.example.com。

“/robots.txt”文件的格式和语义如下:

  • 文件由一个或多个记录组成,记录之间由一个或多个空行(以 CR、CR/NL 或 NL 结尾)分隔。每个记录包含形如“:<optionalspace><optionalspace>”的行。字段名不区分大小写。
  • 可以使用 UNIX Bourne shell 约定在文件中包含注释:使用“#”字符表示丢弃前面的空格(如果有)和行终止符之前行的其余部分。只包含注释的行会被完全丢弃,因此不表示记录边界。
  • 记录以一个或多个 User-agent 行开头,后跟一个或多个 Disallow 行,详情如下。无法识别的标头将被忽略。
  • 可选地,站点地图的位置也可以通过在 robots.txt 中添加 **Sitemap: /sitemap.xml** 行来包含在 robots.txt 文件中。
  • 文件名必须是 robot.txt,并且必须放置在网站的根目录下,即 www.example.com/robot.txt。

以下示例“/robots.txt”文件指定任何机器人都不应访问以“/cyberworld/map/”或“/tmp/”开头或 /PersonalData.html 的任何 URL。还提供了站点地图文件。

# Robots.txt for http://www.example.com/
User-agent: *
Disallow: /cyberworld/map/ # This is an infinite virtual URL space
Disallow: /tmp/ # these will soon disappear
Disallow: /PersonalData.htm
Sitemap: /sitemap.xml

什么是站点地图?

当 robot.txt 阻止爬虫检索网站信息时,站点地图协议允许网站管理员告知搜索引擎网站上可供爬虫抓取的 URL。

站点地图是一个 XML 文件,列出了站点的 URL。它允许网站管理员为每个 URL 添加额外信息:上次更新时间、更改频率以及相对于站点中其他 URL 的重要性。这使得搜索引擎能够更智能地抓取站点。站点地图是一种 URL 包含协议,并补充了 robots.txt(一种 URL 排除协议)。

网站管理员可以生成包含网站上所有可访问 URL 的站点地图,并将其提交给搜索引擎。由于 Google、MSN、Yahoo 和 Ask 现在使用相同的协议,因此拥有站点地图将使最大的搜索引擎拥有更新的页面信息。

站点地图是对搜索引擎已经用于发现 URL 的现有基于爬虫的机制的补充,而不是替代。相反,通过向搜索引擎提交站点地图,网站管理员只是在帮助该搜索引擎的爬虫更好地抓取其网站。使用此协议不能保证网页会被包含在搜索索引中,也不会影响网页在搜索结果中的排名方式。

关于站点地图的一些更多事实

  1. 站点地图也可以只是一个包含 URL 列表的纯文本文件。
  2. 站点地图文件每个站点地图的 URL 数量限制为 50,000 个,大小限制为 10 兆字节。
  3. 支持多个站点地图文件,其中站点地图索引文件作为总共 1000 个站点地图的入口点。
  4. 文件名应符合所有常用操作系统的文件命名限制。
  5. 文件名可以包含任何字符,但必须符合上述第 4 点。

XML 站点地图的示例文件

<?xml version='1.0' encoding='UTF-8'?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9"
	    http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
	<url>
		<loc>http://w3c-at.de</loc>
		<lastmod>2006-11-18</lastmod>
		<changefreq>daily</changefreq>
		<priority>0.8</priority>
	</url>
</urlset>

文本站点地图的示例文件

http://www.example.com/catalog?item=1
http://www.example.com/catalog?item=11

搜索引擎如何对网页进行排名?

搜索引擎在面对数亿个网页进行排序时,如何确定相关性?它们遵循一套规则,称为算法。一个特定搜索引擎的算法具体如何工作是严守的商业秘密。然而,所有主要的搜索引擎都遵循一些通用规则来确定页面排名。

  • **位置**——搜索字符串出现的位置非常重要。搜索字符串出现在 HTML 标题中的网站将优先于出现在正文文本中的网站显示。换句话说,如果搜索字符串出现在标题中,则获得第一优先级,然后是标题,然后是索引页面正文文本的前几段,依此类推。
  • **频率**——是搜索引擎确定相关性的另一个主要因素。搜索引擎会分析关键词在网页中相对于其他词出现的频率。频率较高的网页通常被认为比其他网页更相关。
  • **元标签** – 搜索引擎还会使用一些元标签来对页面进行排名/搜索/索引。每个搜索引擎都有自己的一套用于此目的的标签。

上述的位置/频率方法是一种非常通用的方法,被视为大多数搜索引擎进行页面排名的第一步。其他方法包括点击率测量。这意味着搜索引擎可能会观察某人在特定搜索中选择的结果,然后最终淘汰未能吸引点击的高排名页面,同时提升吸引访问者的低排名页面。

如果搜索引擎检测到“搜索引擎垃圾邮件”,它也可能会惩罚页面或将其从索引中排除。一个例子是当一个单词在页面上重复数百或数千次,以增加频率并使页面在列表中排名更高。搜索引擎以各种方式监控常见的垃圾邮件方法,包括跟进用户的投诉。

通过上述基本页面排名(在某种程度上由网站管理员控制),搜索引擎可能有自己的算法来提供有保障的页面排名,这是一个商业秘密,有些搜索引擎甚至可能对其页面排名系统收费。因此,即使网站管理员提供了所有上述用于页面排名的信息,也不能保证他们的页面会显示在前几个结果页面中。

将您的网站添加到 Google 的步骤

在本节中,我们将讨论如何将新创建的网站添加到 Google 的数据库中,并允许其他搜索引擎也抓取我们的网站并在其索引中创建条目。这样,当有人搜索时,我们的网站就会出现在搜索结果中。这些步骤特定于 Google,并且您必须有一个 Google 电子邮件 ID 作为执行这些步骤的先决条件。以下是要遵循的步骤:

  1. 创建一个站点地图文件并将其上传到您的网站。
  2. 前往 www.google.com/webmasters/tools/
  3. 使用您的 Google 用户名和密码登录
  4. 提供您的网站域名。
  5. 提供站点地图文件并进行验证。

大功告成。现在 Google 将在下一次抓取会话中索引您的网站。没有指定下次抓取的具体时间范围。您需要间歇性地检查您的网站是否显示在搜索结果中。

创建网站以实现快速可靠搜索时需要记住的要点

以下是一些您可以遵循的要点,通过它们可以提高您网站的页面排名。

  • 为网站中的每个页面提供相关的标题。人们常犯的一个错误是复制相同的标题,只进行细微修改。在我看来,每个页面的标题都应该与页面内容高度相关。
  • 对标题标签也使用相同的规则。将最重要的关键词放在 h1 中,次重要的放在 h2 中,其他变体以此类推。
  • 始终为页面上的所有图像提供 alt 属性。这些属性中提供的文本必须与页面/图像相关。
  • 内容正文中的标准关键词密度应在 4-6% 之间。这意味着每 100 个词中应有 4-6 个是用户可能在其搜索条件中使用的主要关键词。
  • 定期更新页面。我的建议是每月刷新/更新内容一到两次,但这条规则因网站而异,取决于许多其他因素。这仅仅是为了让爬虫在访问您的网站进行更新时能够发现一些不同的内容。
  • 也请在其他网站上提供您的网站链接。有两种方式可以做到:一种是付费在一些网络营销网站上提供您的网站链接;另一种是通过相互协议在其他网站上提供您的网站链接。

一些有用的搜索技巧

虽然下面提供的并非完整列表。这些技巧随时可在 Google 搜索时使用。如需完整列表,请参阅 Google 的在线帮助。

  • 短语搜索("")- 在一组单词周围使用双引号,使 Google 能够以精确的顺序考虑这些精确的单词,而无需任何更改。
  • 排除运算符 (-) - 单词前紧跟一个减号(字符串与减号之间有空格)表示不包含包含该单词的页面。
  • 通配符 (*) - 作为通配符工作,功能非常强大。它告诉 Google 尝试将星号视为任何未知字符的占位符,然后找到最佳匹配项。
  • 精确搜索 (+) -(无空格)可用于自动搜索同义词,从而找到搜索字符串的相关同义词。
  • OR 运算符 - 默认情况下,谷歌的行为是考虑搜索文本框中提供的所有词。如果您希望在提供的词中有一个匹配时获取结果,则可以使用 OR。
  • 美元符号 ($) 通常用于表示价格。

需要改进的地方?

>Google_Search_Example_2.JPG

尽管当今的搜索引擎非常先进,但总有一些改进的空间。以下是一些可以改进的地方。

  • 搜索可以从基于简单文本扩展到基于概念。基于概念的搜索可能会提供更精细的结果集。例如,如果我在 Google 中搜索“索引软件”,它会给我第一页上的不相关结果。这不应该发生。结果集中包含的“保险软件”与我的搜索条件完全不相关。
  • 搜索内容时可以提出更多问题。这将使搜索范围缩小,并可能产生更好、更相关的结果集。大多数网站通过高级搜索实现了这一点。
  • 可以包含的另一个重要因素是文档更新日期。搜索引擎从不使用文档更新日期。在搜索最新新闻时,这变得非常重要。如果某个国家发生骚乱或爆炸新闻,每个人都会尝试搜索“该国骚乱”或“该国爆炸”,但可能会得到包含不相关存档数据的结果集。”并可能提供包含不相关存档数据的结果集。

有用链接

有关上述文档中使用术语的更多信息,您可以参考以下链接。

http://Google.co.in
http://searchenginewatch.com/
http://www.seowizz.net/
https://computer.100000.org.cn/google1.htm
http://en.wikipedia.org/wiki/Main_Page

谢谢

© . All rights reserved.