APP下载

搜索引擎浅谈

2018-05-18

信息通信技术与政策 2018年4期
关键词:搜索引擎网页检索

1 引言

搜索引擎的诞生源自互联网最根本的用途之一:信息获取。

在搜索引擎出现之前,互联网缺少入口,用户往往需要自己记住有用的网站和网页。为了满足这种需求,最早的“搜索引擎”,即分类目录浏览式的引擎便出现了,Yahoo就是其中的代表。最初只是采用把一些有用的网站通过分类的方式手工组织起来,便于用户找到有用的信息。能够手工组织也是基于早年整个互联网的网站数量也非常少,可以通过人工方式实现组织。

随着互联网的壮大,网页网站数量越来越多,手工组织的方式变为不可行,于是由机器实现的全文检索引擎便出现了。用户可以通过关键字查询来获取相关的网页。又随着网页数量的不断增多,任何关键字查询都会返回大量的相关网页,如果对网页进行评分和排序,返回给用户真正有价值的网页便成为重点。基于网页之间的链接关系为网页进行评分,成为很多搜索引擎的网页排序算法基础,Google的PageRank算法便是其中的代表者。

Google也以此为基础成为搜索引擎产品中的领先者,为用户提供了更好的搜索结果相关性。现代搜索引擎基本上也由此基本成型,虽然后来的技术创新和改进很多,但主要的思路基本上没有变。

搜索引擎发展到今天,基础架构和算法在技术上都已经基本成型和成熟。搜索引擎已经发展成为根据一定的策略、运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信息展示给用户的系统。

2 搜索引擎技术

搜索引擎所涉及和涵盖的技术范围非常广,涉及到了系统架构和算法设计等许多方面。可以说由于搜索引擎的出现,把互联网产品的技术水平提高到了一个新的高度;搜索引擎无论是在数据和系统规模,还是在算法技术的研究应用深度上,都远超之前简单的互联网产品。

搜索引擎涉及的关键技术点包含:爬虫(Crawling)、索引结构(Inverted Index)、检索模型(VSM & TF- IDF)、搜索排序(Relevance Ranking &Evaluation)、链接分析(Link Analysis)、分类(Document& Query Classification)、自然语言处理(NLP:Tokenization, Lemmatization, POS Tagging, NER, etc.)、分布式系统(Distributed Processing&Storage)。

虽然搜索引擎涉及的技术方方面面,但归结起来最关键的几点在于:

●系统:大规模分布式系统,支撑大规模的数据处理容量和在线查询负载。

●数据:数据处理和挖掘能力。

●算法:搜索相关性排序、查询分析、分类等。

由此可见搜索引擎系统是一个由许多模块组成的复杂系统,核心模块通常包括爬虫、索引、检索和排序,除了必需的核心模块之外,通常还需要一些支持辅助模块,常见的有链接分析、去重、反垃圾、查询分析等。搜索引擎中各关键功能模块功能简介如下:

(1)爬虫:从互联网爬取原始网页数据,存储于文档知识库服务器。

(2)文档知识库服务器:存储原始网页数据,通常是分布式Key-Value数据库,能根据URL/UID快速获取网页内容。

(3)索引:读取原始网页数据,解析网页,抽取有效字段,生成索引数据。索引数据的生成方式通常是增量的,分块/分片的,并会进行索引合并、优化和删除。生成的索引数据通常包括:字典数据、倒排表、正排表、文档属性等。生成的索引存储于索引服务器。

(4)索引服务器:存储索引数据,主要是倒排表,通常是分块、分片存储,并支持增量更新和删除。数据内容量非常大时,还根据类别、主题、时间、网页质量划分数据分区和分布,更好地服务在线查询。

(5)检索:读取倒排表索引,响应前端查询请求,返回相关文档列表数据。

(6)排序:对检索器返回的文档列表进行排序,基于文档和查询的相关性、文档的链接权重等属性。

(7)链接分析:收集各网页的链接数据和锚文本(Anchor Text),以此计算各网页链接评分,最终会作为网页属性参与返回结果排序。

(8)网页去重:提取各网页的相关特征属性,计算相似网页组,提供离线索引和在线查询的去重服务。

(9)网页反垃圾:收集各网页和网站历史信息,提取垃圾网页特征,从而对在线索引中的网页进行判定,去除垃圾网页。

(10)查询分析:分析用户查询,生成结构化查询请求,指派到相应的类别、主题数据服务器进行查询。

(11)页面描述/摘要:为检索和排序完成的网页列表提供相应的描述和摘要。

(12)前端:接受用户请求,分发至相应服务器,返回查询结果。

3 搜索引擎产品介绍

搜索引擎产品其实包括很多种类,并不限于我们最熟悉的全网搜索引擎。具体包含如下几种:

●全网搜索:包括市场份额最高的几大搜索引擎巨头,如Google、Yahoo、Bing。

●中文搜索:在中文搜索市场中,百度一家独大,其他几家如搜狗、搜搜、有道的市场份额相对还比较小。全网搜索和中文搜索属于传统的搜索引擎,它们经过了十几年的发展,目前在技术和产品上都已走向逐渐稳定和成熟,通用搜索的市场也基本进入饱和,不像早些年一直呈现高增长率。

●垂直搜索:传统搜索引擎稳定成熟的同时,在各个垂直领域,也出现了很多和产品结合得很好的垂直搜索产品,比如淘宝的购物搜索、大众点评的美食搜索、去哪儿和酷讯的旅游搜索等,也都在各自领域占据了相当大的市场,成为除了通用搜索引擎之外的重要的用户入口。

●问答搜索:专注于为问句式提供有效的答案,比如Ask.com;其他的如问答社区像Quora和国内的知乎,应该也会往这方面发展。

●知识搜索:典型代表就是WolframAlpha,区别于提供搜索结果列表,它会针对查询提供更详细的整合信息。

●云搜索平台:为其他产品和应用提供搜索服务托管平台(SaaS或是PaaS),Amazon刚刚推出它的CloudSearch,IndexTank在被Linkedin收购之前也是做这项服务的。

●其他:比如DuckDuckGo,主打隐私保护,也有部分用户买账。

各种搜索产品在各自领域都需要解决特定的技术和业务问题,所以也可以建立相对通用搜索的优势,来得到自己的市场和用户。在开源领域,各种开源产品和解决方案也逐渐发展成熟,通用搜索技术不再为大公司所专有,中小企业能够以较低的成本实现自己的搜索应用。现在搜索引擎产品之间的竞争更多的在数据、应用方式和产品形态上,在系统架构和基本算法上区分并不大。

搜索引擎在未来发展上,一是搜索将不仅仅以独立产品的形式出现,更多的会作为搜索功能整合到更多的产品和应用中。在产品形态上,基于传统的搜索引擎,会演化出像推荐引擎、知识引擎、决策引擎等形式的产品,更好地满足和服务用户需求。而搜索引擎所涉及和发展起来的各种技术,会更广泛地应用到各种其他产品上,比如自然语言处理、推荐和广告、数据挖掘等。

总之,搜索引擎对互联网技术和产品带来的影响是巨大的,未来也仍将有很大的发展和应用空间。

4 搜索引擎未来发展的趋势

搜索引擎的快速发展就是近15年发生的,这与互联网的发展趋势密切相关。最近几年,互联网在经过了Web2.0的市场培育阶段后,迎来了以互联网用户的个性化和社交化为中心的趋势。同时,移动设备的逐渐流行及两大趋势的融合,催生了很多新型应用,为了迎接和顺应这种趋势,对搜索引擎来说,也产生了新的挑战。

(1)社会化搜索

随着Facebook的流行,社交网络平台和应用占据了互联网的主流,社交网络平台强调用户之间的联系和交互,这对传统的搜索技术提出了新的挑战。

传统搜索技术强调搜索结果和用户需求的相关性,社会化搜索除了相关性外,还额外增加了一个维度,即搜索结果的可信赖性。对某个搜索结果,传统的结果可能成千上万,但如果处于用户社交网络内其他用户发布的信息、点评或验证过的信息则更容易信赖,这是与用户的心里密切相关的。社会化搜索为用户提供更准确、更值得信任的搜索结果。

国外的Dogpile等元搜索引擎能够得到发展和壮大,主要得益于国外传统搜索过多,并且企业实现共赢的理念,但在国人思考的是如何把所有资源都掌握在自己手中,百度、Google、Yahoo是不会看着自己在未来发展中落伍,成为跟潮人,现在这几家都在不断丰富自己的产品线,并且触及社会化搜索,来保证自己在这个行业中的地位。

(2)实时搜索

随着微博的个人媒体平台兴起,对搜索引擎的实时性要求日益增高,我想这也是搜索引擎未来的一个发展方向。

实时搜索最突出的特点是时效性强,越来越多的突发事件首次发布在微博上,实时搜索核心强调的就是“快”,用户发布的信息第一时间能被搜索引擎搜索到。

不过在国内,实时搜索由于各方面的原因无法普及使用,比如Google的实时搜索是被重置的,百度也没有明显的实时搜索入口。

(3)移动搜索

随着智能手机的快速发展,基于手机的移动设备搜索日益流行,但移动设备有很大的局限性,比如屏幕太小,可显示的区域不多,计算资源能力有限,打开网页速度很慢,手机输入繁琐等问题都需要解决。

目前,随着智能手机的快速普及,移动搜索一定会更加快速的发展,所以移动搜索的市场占有率会逐步上升,而对于没有移动版的网站来说,百度也提供了“百度移动开放平台”来弥补这个缺失。

(4)个性化搜索

个性化搜索主要面临两个问题:如何建立用户的个人兴趣模型?在搜索引擎里如何使用这种个人兴趣模型?

个性化搜索的核心是根据用户的网络行为,建立一套准确的个人兴趣模型。而建立这样一套模型,就要全民收集与用户相关的信息,包括用户搜索历史、点击记录、浏览过的网页、用户E-mail信息、收藏夹信息、用户发布过的信息、博客、微博等内容。比较常见的是从这些信息中提取出关键词及其权重。

为不同用户提供个性化的搜索结果,是搜索引擎总的发展趋势,但现有技术有很多问题,比如个人隐私的泄露,而且用户的兴趣会不断变化,太依赖历史信息,可能无法反映用户的兴趣变化。

(5)地理位置感知搜索

目前,很多手机已经有GPS的应用了,这是基于地理位置感知的搜索,而且可以通过陀螺仪等设备感知用户的朝向,基于这种信息,可以为用户提供准确的地理位置服务以及相关搜索服务。目前,此类应用已经大行其道,比如手机地图APP。

(6)跨语言搜索

这方面做得最好的是Google,Google目前已经能提供多种语言之间的跨语言搜索,比如搜索“麻省理工”,排在第一位的则是麻省理工学院的主页。

如何将中文的用户查询翻译为英文查询,目前主流的方法有3种:机器翻译、双语词典查询和双语语料挖掘。对于一个全球性的搜索引擎来说,具备跨语言搜索功能是必然的发展趋势,而其基本的技术路线一般会采用查询翻译加上网页的机器翻译这两种技术手段。

(7)多媒体搜索

目前,搜索引擎的查询还是基于文字的,即使是图片和视频搜索也是基于文本方式。那么未来的多媒体搜索技术则会弥补查询这一缺失。多媒体形式除了文字,主要包括图片、音频、视频。

多媒体搜索比纯文本搜索要复杂许多,一般多媒体搜索包含4个主要步骤:多媒体特征提取、多媒体数据流分割、多媒体数据分类和多媒体数据搜索引擎。

例如图片搜索,一般的步骤为:第一步,缩小尺寸;第二步,简化色彩;第三步,计算平均值;第四步,比较像素的灰度;第五步,计算哈希值(详情可参见Google图片搜索的原理一文)。

(8)情境搜索

情境搜索是融合了多项技术的产品,上面介绍的社会化搜索、个性化搜索、地点感知搜索等都是支持情境搜索的,目前Google在大力提倡这一概念。

所谓情境搜索,就是能够感知人与人所处的环境,针对“此时此地此人”来建立模型,试图理解用户查询的目的,根本目标还是要理解人的信息需求。比如某个用户在苹果专卖店附近发出“苹果”这个搜索请求,基于地点感知及用户的个性化模型,搜索引擎就有可能认为这个查询是针对苹果公司的产品,而非对水果的需求。

5 搜索引擎在应用系统中的应用现状

伴随应用系统(例如OA系统)的规模正在不断扩大,在互联网上得到了成熟稳定发展的搜索引擎技术可以大大提高应用系统的办公使用效率。

5.1 重点关注的功能需求

搜索引擎在管理信息系统中的部署关注以下几点的功能需求:

●通过整合多种数据源,提供统一的搜索服务,达到促进广泛的信息交流和知识共享的目的,实现跨系统、平台、应用、地域之间以及互联网信息的整合。

●提供统一、安全的信息检索接口系统,为所有结构化、非结构化的数据提供标准的数据源输出接口功能。

●处理各种类型的文档,并实现全文检索。

●保证信息检索的迅速、准确,提供高并发率的处理能力。

●系统提供关键的维护、管理、控制和监测功能,采用统一的方式,通过集中监控管理模块与所有搜索服务进行通讯;同时,提供图形化的管理界面,使系统管理员能够对所有模块(或服务)进行本地或远程管理操作。

●系统支持负载均衡和高可用性,支持建立分布式的内部数据索引,并实现对搜索服务器的集群化部署,支持水平灵活扩展。

5.2 建议包含的主要功能

搜索系统将提供高效率的搜索功能,用户通过在单一搜索界面上的操作,可以在最短时间内,完整、准确、及时地得到所需信息。建议主要包括以下功能:

(1)提供信息的全文检索

检索范围除各类文件、信息等的要素、关键字以外,提供包括文件正文内容和附件内容在内的全文检索功能,以满足用户对文件检索的要求。

(2)支持各类文件格式

支持HTML、PDF、ASCIIText、XML、MSOffice格式(Word、PowerPoint、Excel)、压缩文件格式(Zip、Gzip、Tar)等格式的检索。

(3)兼容各类数据源系统

可以采集、处理和索引的信息系统包括:网站(HTML、J2EE、ASP、NET、PHP)、文件系统(Windows、Linux、Unix)、数据库(Oracle、SQL Server、DB2、Sybase、MySQL)、公文流转和邮件系统、门户系统等,以保证增加和更新的文档能够及时地被搜索到,删除的文档及时地从索引平台中去除。增量索引支持可调度模式。增量索引时,应不影响搜索。

(4)减少检索功能对各系统的影响

搜索系统与各系统采用松耦合的集成方式,选择在非工作时间更新数据库索引,从而避免在文件、信息生成时同步数据各系统带来不利影响。

(5)具备良好的系统扩展性与灵活性

通过搜索系统的建立,将对各类管理信息提供统一的检索。同时,能够灵活扩展,快速、简便地与各类新数据源系统进行检索集成。

(6)搜索结果集的相关性排序

平台支持将检索结果按相关度排序后交付给用户,以适应不同应用。

(7)支持搜索结果的个性化定制和动态更新

搜索系统可以根据用户个人的需要进行个性化定制搜索。

(8)结合权限进行采集和搜索

5.3 搜索引擎在应用平台中的技术架构

搜索引擎在应用平台上的技术架构总体上可以划分为门户、数据同步、语言处理、业务处理、系统调度、搜索服务、数据反馈、统计分析、运营维护、系统管理等十大模块,各模块之间在功能上相对独立,业务上又相互联系相互支撑,共同协作从而实现了搜索引擎应用平台的整体服务架构。基于对业务需求的分析,搜索系统的技术架构如图1所示。

门户模块主要涵盖了门户、对外接口服务、对内接口服务、第三方开发接口、API等功能。

数据同步模块支持OA数据、关系形数据、文档形数据、网络数据爬取、论坛数据、知识库等多种数据形式。该模块是搜索引擎平台数据获取模块,通过数据同步将其他业务系统中的数据作为数据源提供给搜索引擎应用平台。

语言处理模块:主要功能包括分词、纠错、转换、扩展及词库学习等。

业务处理模块:主要提供对搜索请求及业务数据的处理,包括搜索任务封装、结果过滤、数据关联、编审支撑、缺失计算、数据排重等功能。

系统调度模块:提供了负载均衡、分布缓存、任务分配、数据分析、数据处理、数据存储、数据备份、任务监控等功能,主要负责将用户的查询任务进行分析、搜索结果进行缓存,并监控管理整个搜索周期。

搜索引擎模块:提供数据索引的创建和管理、分布式存储、任务处理、语义分析、数据分类、搜索、排序、监控及日志等功能。

数据反馈模块:提供搜索结果封装、异常反馈、提示词接口、搜索接口、开发接口及接口封装等功能。通过统一的数据模型,将搜索结果反馈给各接口的服务的调用者,使得接口间关系限于数据耦合,降低了逻辑耦合的可能性。

图1 收索引擎技术架构图

统计分析模块:包括热词统计、趋势统计、访问量统计、业务统计、排行榜、性能统计等。主要提供搜索应用平台各项数据的统计分析服务。

运营维护模块:包括词库管理、排序管理、数据管理、同步管理、过滤管理、抓取管理等。主要提供运营业务系统的管理和配置服务。

系统管理模块:包括接口管理、权限管理、日志管理、安全管理、备份管理等。主要提供系统的基本管理及安全审计服务。

6 结束语

综上所述,搜索引擎技术在移动终端智能化和互联网用户个性化以及社交化为中心的融合趋势下的发展,催生了很多新型应用。搜索引擎技术的发展直接推动了互联网技术的迅速发展和互联网+应用的扩展,伴随着管理信息系统和业务应用系统的互联网化,搜索引擎技术将广泛地应用于管理信息系统和业务应用系统中。本文结合搜索引擎在管理信息系统中的应用给大家提供了一个实用方案,可供参考。

猜你喜欢

搜索引擎网页检索
基于HTML5与CSS3的网页设计技术研究
世界表情符号日
基于CSS的网页导航栏的设计
基于HTML5静态网页设计
基于URL和网页类型的网页信息采集研究
专利检索中“语义”的表现
网络搜索引擎亟待规范
基于Lucene搜索引擎的研究
国际标准检索
国际标准检索