搜索引擎核心技术原理
1.概述
搜索引擎(search engine)是指根据一定的策略、运用特定的计算机程序搜集互联网上的信息,在对信息进行组织和处理后,为用户提供检索服务的系统。
2.搜索引擎分类
按照信息搜集方法和服务提供方式的不同,搜索引擎系统可以分为三大类:全文搜索引擎(Full Text Search Engine)、目录索引类搜索引擎(Search Index/Directory)和元搜索引擎(Meta Search Engine)。
2.1 全文搜索引擎
全文搜索引擎是名副其实的搜索引擎,国外代表有Google,国内则有著名的百度搜索。它们从互联网提取各个网站的信息(以网页文字为主),建立起数据库,并能检索与用户查询条件相匹配的记录,按一定的排列顺序返回结果。
2.2 目录索引类搜索引擎
目录式搜索引擎以人工方式或半自动方式搜集信息,由编辑员查看信息之后,人工形成信息摘要,并将信息置于事先确定的分类框架中。目录索引虽然有搜索功能,但在严格意义上算不上是真正的搜索引擎,仅仅是按目录分类的网站链接列表而已。用户完全可以不用进行关键词(Keywords)查询,仅靠分类目录也可找到需要的信息。目录索引中最具代表性的莫过于大名鼎鼎的Yahoo雅虎。其他著名的还有Open Directory Project(DMOZ)、LookSmart、About等。国内的搜狐、新浪、网易搜索也都属于这一类。
2.3 元搜索引擎
这类搜索引擎没有自己的数据,而是将用户的查询请求同时向多个搜索引擎递交,将返回的结果进行重复排除、重新排序等处理后,作为自己的结果返回给用户,这类搜索引擎兼集多个搜索引擎的信息,并且加入新的排序和信息过滤,可以很好的提高用户满意度。
3. 全文搜索引擎
典型的搜索引擎结构一般由以下三个模块组成:信息采集模块(Crawler),索引模块(Indexer),查询模块(Searcher)。
Crawler:从web中采集网页数据。
Indexer:对Crawler采集数据进行分析生成索引。
Searcher:接受查询请求,通过一定的查询算法获取查询结果,返回给用户。
3.1 利用网络蜘蛛从互联网上抓取网页
全文搜索引擎的“网络机器人(Robot)”或“网络蜘蛛(Spider)”是一种网络上的软件,核心目的是为获取Internet上的信息。一般定义为“一个在网络上检索文件且自动跟踪该文件的超文本结构并循环检索被参照的所有文件的软件”。机器人利用主页中的超文本链接遍历WWW,通过Url引用从一个HTML文档爬行到另一个HTML文档。网上机器人收集到的信息可有多种用途,如建立索引、HIML文件合法性的验证、URL链接点验证与确认、监控与获取更新信息、站点镜像等。
机器人在网上爬行,因此需要建立一个URL列表来记录访问的轨迹。它使用超文本,指向其他文档的URL是隐藏在文档中,需要从中分析提取URL,机器人一般都用于生成索引数据库。所有WWW的搜索程序都有如下的工作步骤:
(1)机器人从起始URL列表中取出URL并从网上读取其指向的内容;
(2)从每一个文档中提取某些信息(如关键字)并放入索引数据库中;
(3)从文档中提取指向其他文档的URL,并加入到URL列表中;
(4)重复上述3个步骤,直到再没有新的URL出现或超出了某些限制(时间或磁盘空间);
(5)给索引数据库加上检索接口,向网上用户发布或提供给用户检索。
搜索算法一般有深度优先和广度优先两种基本的搜索策略。机器人以URL列表存取的方式决定搜索策略:先进先出,则形成广度优先搜索,当起始列表包含有大量的WWW服务器地址时,广度优先搜索将产生一个很好的初始结果,但很难深入到服务器中去;先进后出,则形成深度优先搜索,这样能产生较好的文档分布,更容易发现文档的结构,即找到最大数目的交叉引用。也可以采用遍历搜索的方法,就是直接将32位的IP地址变化,逐个搜索整个Intemet。
量贩式搜索引擎优化是一个技术含量很高的网络应用系统。它包括网络技术、数据库技术动标引技术、检索技术、自动分类技术,机器学习等人工智能技术。
3.2 建立索引表
索引技术是搜索引擎的核心技术之一。搜索引擎要对所收集到的信息进行整理、分类、索引以产生索引库,而中文搜索引擎的核心是分词技术。分词技术是利用一定的规则和词库,切分出一个句子中的词,为自动索引做好准备。目前的索引多采用Non—clustered方法,该技术和语言文字的理解有很大的关系,具体有如下几点:
(1)存储语法库,和词汇库配合分出句子中的词汇;
(2)存储词汇库,要同时存储词汇的使用频率和常见搭配方式;
(3)词汇宽,应可划分为不同的专业库,以便于处理专业文献;
(4)对无法分词的句子,把每个字当作词来处理。
索引器生成从关键词到URL的关系索引表。索引表一般使用某种形式的倒排表(inverted list),即由索引项查找相应的URL。索引表也要记录索引项在文档中出现的位置,以便检索器计算索引项之间的相邻关系或接近关系,并以特定的数据结构存储在硬盘上。
不同的搜索引擎系统可能采用不尽相同的标引方法。例如Webcrawler利用全文检索技术,对网页中每一个单词进行索引;Lycos只对页名、标题以及最重要的100个注释词等选择性词语进行索引;Infoseek则提供概念检索和词组检索,支持and、or、near、not等布尔运算。检索引擎的索引方法大致可分为自动索引、手工索引和用户登录三类。
3.3 查询
检索器的主要功能是根据用户输入的关键词在索引器形成的倒排表中进行检索,同时完成页面与检索之间的相关度评价,对将要输出的结果进行排序,并实现某种用户相关性反馈机制。
通过搜索引擎获得的检索结果往往成百上千,为了得到有用的信息,常用的方法是按网页的重要性或相关性给网页评级,进行相关性排序。这里的相关度是指搜索关键字在文档中出现的额度。当额度越高时,则认为该文档的相关程度越高。能见度也是常用的衡量标准之一。一个网页的能见度是指该网页入口超级链接的数目。能见度方法是基于这样的观点:一个网页被其他网页引用得越多,则该网页就越有价值。特别地,一个网页被越重要的网页所引用,则该网页的重要程度也就越高。结果处理技术可归纳为:
(1)按频次排定次序,通常,如果一个页面包含了越多的关键词,其搜索目标的相关性应该越好,这是非常合乎常理的解决方案。
(2)按页面被访问度排序 在这种方法中,搜索引擎会记录它所搜索到的页面被访问的频率。人们访问较多的页面通常应该包含比较多的信息,或者有其他吸引入的长处。这种解决方案适合一般的搜索用户,而因为大部分的搜索引擎都不是专业性用户,所以这种方案也比较适合一般搜索引擎使用。
(3)二次检索 进一步净化(比flne)结果,按照一定的条件对搜索结果进行优化,可以再选择类别、相关词进行二次搜索等。
由于目前的搜索引擎还不具备智能,除非知道要查找的文档的标题,否则排列第一的结果未必是“最好”的结果。所以有些文档尽管相关程度高,但并不一定是用户最需要的文档。