全站搜索的设计与实现Word格式.docx
- 文档编号:1462483
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:40
- 大小:465.25KB
全站搜索的设计与实现Word格式.docx
《全站搜索的设计与实现Word格式.docx》由会员分享,可在线阅读,更多相关《全站搜索的设计与实现Word格式.docx(40页珍藏版)》请在冰点文库上搜索。
(3)生理需要。
对信息的获得、保持的需要;
(4)安全需要。
信息探索的隐私保护需要;
(5)权力需要。
信息的支配和自主等需要。
2.2分析结果
(1)互联网搜索引擎的背后是巨大的信息库,内容量比任何其他资源都丰富,这更激发个体求知的需要;
(2)个体使用搜索引擎进行搜索是个人对物体(网络)的沟通,个人感到隐私得到保障,有安全感。
而个人的其他咨询(如询问他人、电话咨询)是个人和其他个人的沟通,个人隐私得不到保障;
(3)搜索引擎简洁和操作方式的方便使个人可以更好的控制沟通对象,更能满足人的权力需求。
站内搜索引擎的用户需求分析:
(1)精确度检索:
需要高精确度检索信息。
用户难以忍受在动辄成千上万的检索结果中,漫漫寻求自己真正需要的结果;
(2)高质量摘要:
信息检索结果需要高质量摘要。
用户难以忍受在自动生成的低质量摘要引导之下,一次次链接到可能一无所用的详细内容;
(3)时效性:
需要高时效性信息自动检索结果适时推送服务,以便不至于为了急于得到所需信息一次次反复检索;
(4)用户界面的简洁和进行检索需要最方便快捷的进入方式。
对内容生成的特别要求,搜索引擎得以成功的一个最主要前提条件是对内容要求的苛刻。
(1)文字摘要信息的高流通效率。
该策略是保证搜索快捷的首要前提条件。
因此必须探索文字摘要内容的结构化特征,直接提供简约、通用的结构化摘要发布-检索-链接通讯服务。
3相关技术介绍
3.1ASP简介
ASP(ActiveServerPage)内含于InternetInformationServer(IIS)当中,提供一个服务器端(server-side)的scripting环境,产生和执行动态,交互式,高效率的站点服务器的应用程序。
用户不必担心浏览器是否能执行设计出来的ActiveServerPages,站点服务器会自动将ActiveServerPages的程序码,解释为标准HTML格式的主页内容,在送到用户端的浏览器上显示出来。
用户端只要使用常规可执行HTML码的浏览器,即可浏览ActiveServerPages所设计的主页内容
3.1.1ASP访问数据库原理
ASP是服务器端的脚本执行环境,可用来产生和执行动态的高性能的WEB服务器程序。
当用户使用浏览器请求ASP主页时,WEB服务器响应,调用ASP引擎来执行ASP文件,并解释其中的脚本语言(JScript
或VBScript),通过ODBC连接数据库,由数据库访问组件ADO(ActiveX
Data
Objects)完成数据库操作,最后ASP生成包含有数据查询结果的HTML主页返回用户端显示。
由于ASP在服务器端运行,运行结果以HTML主页形式返回用户浏览器,因而ASP源程序不会泄密,增加了系统的安全保密性。
此外,ASP是面向对象的脚本环境,用户可自行增加ActiveX组件来扩充其功能,拓展应用范围。
ASP访问数据库步骤:
(1)定义数据源;
(2)指定要执行的SQL命令;
(3)使用RecordSet属性和方法,并显示结果;
(4)关闭数据库。
3.1.2ASP运行环境以及IIS
ASP的程序代码简单、通用,文件名由.asp结尾,ASP文件通常由四部分构成:
(1)
标准的HTML标记:
所有的HTML标记均可使用;
(2)
ASP语法命令:
位于<
%
%>
标签内的ASP代码;
(3)
服务器端的include语句:
可用#include语句调入其它ASP代码,增强了编程的灵活性;
(4)
脚本语言:
ASP自带JScript和VBScript两种脚本语言,增加了ASP的编程功能,用户也可安装其它脚本语言,如Perl、Rexx等。
ASP的运行环境
目前ASP可运行在三种环境下。
(1)WINDOWS
NT
server
4.0运行IIS
3.0(Internet
Information
Server)以上;
WINDOWS
workstation
4.0运行Peer
Web
Server
3.0以上;
95/98运行PWS(Personal
Server)。
其中以NT
server上的IIS(InternetInformationServer)功能最强,提供了对ASP的全面支持,是创建高速、稳定的ASP主页的最佳选择。
系统设计IIS是Internet信息服务(InternetInformationServer)的缩写,它是一种Web服务,主要包括WWW服务器、FTP服务器等,使得在Intranet(局域网)或Internet(因特网)上发布信息成了一件很容易的事。
WWW服务提供维护网站和网页,并回复基于浏览器的请求。
有了WWW服务和它内置的功能,通过Internet信息服务器可以创建各种各样的Internet应用程序,加上其内置的对数据库连接的支持,IIS的功能就更强大。
SQL数据库信息或其他任何符合ODBC的数据库信息都能在Internet/Intranet上灵活应用。
3.2SQLSERVER2000
MicrosoftSQLServer2000是一种关联式资料库(RDBMS)。
此种资料库采资料分类表格化的架构,将相关的资料组成表格,表格和表格之间可以有关联性,因此称为关联式资料库。
系统管理员可透过应用程序进入服务器,更改资料型态,管理及处理服务器资源。
SQLServer也是一种具备延展性的资料库(scalabledatabase),亦即SQLServer可以支援多位使用者同时进入资料库中处理大量的资料。
SQLServer系统可以安装在主/式架构的作业系统平台上,或是独立的服务器主机。
至于要安装在哪一种系统上,则先要评估有多少使用者会同时在资料库中作业,以及利用资料库进行哪种工作。
4系统实现的相关技术以及相关原理
4.1搜索引擎实现的原理
搜索引擎的实现原理,可以看作四步:
从互联网上抓取网页→建立索引数据库→在索引数据库中搜索→对搜索结果进行处理和排序。
4.1.1从互联网上抓取网页
利用能够从互联网上自动收集网页的网络蜘蛛程序,自动访问互联网,并沿着任何网页中的所有URL爬到其它网页,重复这过程,并把爬过的所有网页收集到服务器中。
4.1.2建立索引数据库
由索引系统程序对收集回来的网页进行分析,提取相关网页信息(包括网页所在URL、编码类型、页面内容包含的关键词、关键词位置、生成时间、大小、与其它网页的链接关系等),根据一定的相关度算法进行大量复杂计算,得到每一个网页针对页面内容中及超链中每一个关键词的相关度(或重要性),然后用这些相关信息建立网页索引数据库。
4.1.3在索引数据库中搜索
当用户输入关键词搜索后,分解搜索请求,由搜索系统程序从网页索引数据库中找到符合该关键词的所有相关网页。
4.1.4对搜索结果进行处理排序
所有相关网页针对该关键词的相关信息在索引库中都有记录,只需综合相关信息和网页级别形成相关度数值,然后进行排序,相关度越高,排名越靠前。
最后由页面生成系统将搜索结果的链接地址和页面内容摘要等内容组织起来返回给用户。
4.2中文分词
众所周知,英文是以词为单位的,词和词之间是靠空格隔开,而中文是以字为单位,句子中所有的字连起来才能描述一个意思。
例如,英文句子Iamastudent,用中文则为:
“我是一个学生”。
计算机可以很简单通过空格知道student是一个单词,但是不能很容易明白“学”、“生”两个字合起来才表示一个词。
把中文的汉字序列切分成有意义的词,就是中文分词,有些人也称为切词。
我是一个学生,分词的结果是:
我是一个学生。
对于搜索引擎来说,最重要的并不是找到所有结果,因为在上百亿的网页中找到所有结果没有太多的意义,没有人能看得完,最重要的是把最相关的结果排在最前面,这也称为相关度排序。
中文分词的准确与否,常常直接影响到对搜索结果的相关度排序。
中文分词技术
中文分词技术属于自然语言处理技术范畴,对于一句话,人可以通过自己的知识来明白哪些是词,哪些不是词,但如何让计算机也能理解?
其处理过程就是分词算法。
现有的分词算法可分为三大类:
基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法。
(1)基于字符串匹配的分词方法
这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字符串与一个“充分大的”机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功(识别出一个词)。
按照扫描方向的不同,串匹配分词方法可以分为正向匹配和逆向匹配;
按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配;
按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与标注相结合的一体化方法。
常用的几种机械分词方法如下:
A正向最大匹配法(由左到右的方向);
B逆向最大匹配法(由右到左的方向);
C最少切分(使每一句中切出的词数最小)。
还可以将上述各种方法相互组合,例如,可以将正向最大匹配方法和逆向最大匹配方法结合起来构成双向匹配法。
由于汉语单字成词的特点,正向最小匹配和逆向最小匹配一般很少使用。
一般说来,逆向匹配的切分精度略高于正向匹配,遇到的歧义现象也较少。
统计结果表明,单纯使用正向最大匹配的错误率为1/169,单纯使用逆向最大匹配的错误率为1/245。
但这种精度还远远不能满足实际的需要。
实际使用的分词系统,都是把机械分词作为一种初分手段,还需通过利用各种其它的语言信息来进一步提高切分的准确率。
一种方法是改进扫描方式,称为特征扫描或标志切分,优先在待分析字符串中识别和切分出一些带有明显特征的词,以这些词作为断点,可将原字符串分为较小的串再来进行机械分词,从而减少匹配的错误率。
另一种方法是将分词和词类标注结合起来,利用丰富的词类信息对分词决策提供帮助,并且在标注过程中又反过来对分词结果进行检验、调整,从而极大地提高切分的准确率。
对于机械分词方法,可以建立一个一般的模型,在这方面有专业的学术论文,这里不做详细论述。
(2)基于理解的分词方法
这种分词方法是通过让计算机模拟人对句子的理解,达到识别词的效果。
其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象。
它通常包括三个部分:
分词子系统、句法语义子系统、总控部分。
在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息来对分词歧义进行判断,即它模拟了人对句子的理解过程。
这种分词方法需要使用大量的语言知识和信息。
由于汉语语言知识的笼统、复杂性,难以将各种语言信息组织成机器可直接读取的形式,因此目前基于理解的分词系统还处在试验阶段。
(3)基于统计的分词方法
从形式上看,词是稳定的字的组合,因此在上下文中,相邻的字同时出现的次数越多,就越有可能构成一个词。
因此字与字相邻共现的频率或概率能够较好的反映成词的可信度。
可以对语料中相邻共现的各个字的组合的频度进行统计,计算它们的互现信息。
定义两个字的互现信息,计算两个汉字X、Y的相邻共现概率。
互现信息体现了汉字之间结合关系的紧密程度。
当紧密程度高于某一个阈值时,便可认为此字组可能构成了一个词。
这种方法只需对语料中的字组频度进行统计,不需要切分词典,因而又叫做无词典分词法或统计取词方法。
但这种方法也有一定的局限性,会经常抽出一些共现频度高、但并不是词的常用字组,例如“这一”、“之一”、“有的”、“我的”、“许多的”等,并且对常用词的识别精度差,时空开销大。
实际应用的统计分词系统都要使用一部基本的分词词典(常用词词典)进行串匹配分词,同时使用统计方法识别一些新的词,即将串频统计和串匹配结合起来,既发挥匹配分词切分速度快、效率高的特点,又利用了无词典分词结合上下文识别生词、自动消除歧义的优点。
到底哪种分词算法的准确度更高,目前并无定论。
对于任何一个成熟的分词系统来说,不可能单独依靠某一种算法来实现,都需要综合不同的算法。
笔者了解,海量科技的分词算法就采用“复方分词法”,所谓复方,相当于用中药中的复方概念,即用不同的药才综合起来去医治疾病,同样,对于中文词的识别,需要多种算法来处理不同的问题。
分词中的难题
有了成熟的分词算法,是否就能容易的解决中文分词的问题呢?
事实远非如此。
中文是一种十分复杂的语言,让计算机理解中文语言更是困难。
在中文分词过程中,有两大难题一直没有完全突破。
(1)歧义识别
歧义是指同样的一句话,可能有两种或者更多的切分方法。
例如:
表面的,因为“表面”和“面的”都是词,那么这个短语就可以分成“表面的”和“表面的”。
这种称为交叉歧义。
像这种交叉歧义十分常见,前面举的“和服”的例子,其实就是因为交叉歧义引起的错误。
“化妆和服装”可以分成“化妆和服装”或者“化妆和服装”。
由于没有人的知识去理解,计算机很难知道到底哪个方案正确。
交叉歧义相对组合歧义来说是还算比较容易处理,组合歧义就必需根据整个句子来判断了。
例如,在句子“这个门把手坏了”中,“把手”是个词,但在句子“请把手拿开”中,“把手”就不是一个词;
在句子“将军任命了一名中将”中,“中将”是个词,但在句子“产量三年中将增长两倍”中,“中将”就不再是词。
这些词计算机又如何去识别?
如果交叉歧义和组合歧义计算机都能解决的话,在歧义中还有一个难题,是真歧义。
真歧义意思是给出一句话,由人去判断也不知道哪个应该是词,哪个应该不是词。
(2)新词识别
新词,专业术语称为未登录词。
也就是那些在字典中都没有收录过,但又确实能称为词的那些词。
最典型的是人名,人可以很容易理解句子“王军虎去广州了”中,“王军虎”是个词,因为是一个人的名字,但要是让计算机去识别就困难了。
如果把“王军虎”做为一个词收录到字典中去,全世界有那么多名字,而且每时每刻都有新增的人名,收录这些人名本身就是一项巨大的工程。
即使这项工作可以完成,还是会存在问题,例如:
在句子“王军虎头虎脑的”中,“王军虎”还能不能算词?
新词中除了人名以外,还有机构名、地名、产品名、商标名、简称、省略语等都是很难处理的问题,而且这些又正好是人们经常使用的词,因此对于搜索引擎来说,分词系统中的新词识别十分重要。
目前新词识别准确率已经成为评价一个分词系统好坏的重要标志之一。
(4)中文分词的应用
目前在自然语言处理技术中,中文处理技术比西文处理技术要落后很大一段距离,许多西文的处理方法中文不能直接采用,就是因为中文必需有分词这道工序。
中文分词是其它中文信息处理的基础,搜索引擎只是中文分词的一个应用。
其它的比如机器翻译(MT)、语音合成、自动分类、自动摘要、自动校对等等,都需要用到分词。
因为中文需要分词,可能会影响一些研究,但同时也为一些企业带来机会,因为国外的计算机处理技术要想进入中国市场,首先也是要解决中文分词问题。
在中文研究方面,相比外国人来说,中国人有十分明显的优势。
分词准确性对搜索引擎来说十分重要,但如果分词速度太慢,即使准确性再高,对于搜索引擎来说也是不可用的,因为搜索引擎需要处理数以亿计的网页,如果分词耗用的时间过长,会严重影响搜索引擎内容更新的速度。
因此对于搜索引擎来说,分词的准确性和速度,二者都需要达到很高的要求
4.3网络蜘蛛
网络蜘蛛即WebSpider,是一个形象的名字。
把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。
网络蜘蛛是通过网页的链接地址来寻找网页,从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。
如果把整个互联网当成一个网站,那么网络蜘蛛就可以用这个原理把互联网上所有的网页都抓取下来。
对于搜索引擎来说,要抓取互联网上所有的网页几乎是不可能的,从目前公布的数据来看,容量最大的搜索引擎也不过是抓取了整个网页数量的百分之四十左右。
这其中的原因一方面是抓取技术的瓶颈,无法遍历所有的网页,有许多网页无法从其它网页的链接中找到;
另一个原因是存储技术和处理技术的问题,如果按照每个页面的平均大小为20K计算(包含图片),100亿网页的容量是100×
2000G字节,即使能够存储,下载也存在问题(按照一台机器每秒下载20K计算,需要340台机器不停的下载一年时间,才能把所有网页下载完毕)。
同时,由于数据量太大,在提供搜索时也会有效率方面的影响。
因此,许多搜索引擎的网络蜘蛛只是抓取那些重要的网页,而在抓取的时候评价重要性主要的依据是某个网页的链接深度。
在抓取网页的时候,网络蜘蛛一般有两种策略:
广度优先和深度优先(如下图所示)。
广度优先是指网络蜘蛛会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。
这是最常用的方式,因为这个方法可以让网络蜘蛛并行处理,提高其抓取速度。
深度优先是指网络蜘蛛会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。
这个方法有个优点是网络蜘蛛在设计的时候比较容易。
由于不可能抓取所有的网页,有些网络蜘蛛对一些不太重要的网站,设置了访问的层数。
对于网站设计者来说,扁平化的网站结构设计有助于搜索引擎抓取其更多的网页。
网络蜘蛛在访问网站网页的时候,经常会遇到加密数据和网页权限的问题,有些网页是需要会员权限才能访问。
当然,网站的所有者可以通过协议让网络蜘蛛不去抓取,但对于一些出售报告的网站,他们希望搜索引擎能搜索到他们的报告,但又不能完全免费的让搜索者查看,这样就需要给网络蜘蛛提供相应的用户名和密码。
网络蜘蛛可以通过所给的权限对这些网页进行网页抓取,从而提供搜索。
而当搜索者点击查看该网页的时候,同样需要搜索者提供相应的权限验证。
4.3.1网站与网络蜘蛛
网络蜘蛛需要抓取网页,不同于一般的访问,如果控制不好,则会引起网站服务器负担过重。
每个网络蜘蛛都有自己的名字,在抓取网页的时候,都会向网站标明自己的身份。
网络蜘蛛在抓取网页的时候会发送一个请求,这个请求中就有一个字段为User-agent,用于标识此网络蜘蛛的身份。
网络蜘蛛进入一个网站,一般会访问一个特殊的文本文件Robots.txt,这个文件一般放在网站服务器的根目录下。
网站管理员可以通过robots.txt来定义哪些目录网络蜘蛛不能访问,或者哪些目录对于某些特定的网络蜘蛛不能访问。
例如有些网站的可执行文件目录和临时文件目录不希望被搜索引擎搜索到,那么网站管理员就可以把这些目录定义为拒绝访问目录。
而Robots.txt只是一个协议,如果网络蜘蛛的设计者不遵循这个协议,网站管理员也无法阻止网络蜘蛛对于某些页面的访问,但一般的网络蜘蛛都会遵循这些协议,而且网站管理员还可以通过其它方式来拒绝网络蜘蛛对某些网页的抓取。
网络蜘蛛在下载网页的时候,会去识别网页的HTML代码,在其代码的部分,会有META标识。
通过这些标识,可以告诉网络蜘蛛本网页是否需要被抓取,还可以告诉网络蜘蛛本网页中的链接是否需要被继续跟踪。
表示本网页不需要被抓取,但是网页内的链接需要被跟踪。
现在一般的网站都希望搜索引擎能更全面的抓取自己网站的网页,因为这样可以让更多的访问者能通过搜索引擎找到此网站。
为了让本网站的网页更全面被抓取到,网站管理员可以建立一个网站地图,即SiteMap。
许多网络蜘蛛会把sitemap.htm文件作为一个网站网页爬取的入口,网站管理员可以把网站内部所有网页的链接放在这个文件里面,那么网络蜘蛛可以很方便的把整个网站抓取下来,避免遗漏某些网页,也会减小对网站服务器的负担。
4.3.2内容提取
搜索引擎建立网页索引,处理的对象是文本文件。
对于网络蜘蛛来说,抓取下来网页包括各种格式,包括html、图片、doc、pdf、多媒体、动态网页及其它格式等。
这些文件抓取下来后,需要把这些文件中的文本信息提取出来。
准确提取这些文档的信息,一方面对搜索引擎的搜索准确性有重要作用,另一方面对于网络蜘蛛正确跟踪其它链接有一定影响。
对于doc、pdf等文档,这种由专业厂商提供的软件生成的文档,厂商都会提供相应的文本提取接口。
网络蜘蛛只需要调用这些插件的接口,就可以轻松的提取文档中的文本信息和文件其它相关的信息。
HTML等文档不一样,HTML有一套自己的语法,通过不同的命令标识符来表示不同的字体、颜色、位置等版式,如:
、、等,提取文本信息时需要把这些标识符都过滤掉。
过滤标识符并非难事,因为这些标识符都有一定的规则,只要按照不同的标识符取得相应的信息即可。
但在识别这些信息的时候,需要同步记录许多版式信息,例如文字的字体大小、是否是标题、是否是加粗显示、是否是页面的关键词等,这些信息有助于计算单词在网页中的重要程度。
同时,对于HTML网页来说,除了标题和正文以外,会有许多广告链接以及公共的频道链接,这些链接和文本正文一点关系也没有,在提取网页内容的时候,也需要过滤这些无用的链接。
例如某个网站有“产品介绍”频道,因为导航条在网站内每个网页都有,若不过滤导航条链接,在搜索“产品介绍”的时候,则网站内每个网页都会搜索到,无疑会带来大量垃圾信息。
过滤这些无效链接需要统计大量的网页结构规律,抽取一些共性,统一过滤;
对于一些重要而结果特殊的网站,还需要个别处理。
这就需要网络蜘蛛的设计有一定的扩展性。
对于多媒体、图片等文件,一般是通过链接的锚文本(即,链接文本)和相关的文件注释来判断这些文件的内容。
另外,许多多媒体文件中有文件属性,考虑这些属性也可以更好的了解文件的内容。
动态网页一直是网络蜘蛛面临的难题。
所谓动态网页,是相对于静态网页而言,是由程序自动生成的页面,这样的好处是可以快速统一更改网页风格,也可以减少网页所占服务器的空间,但同样给网络蜘蛛的抓取带来一些麻烦。
由于开发语言不断的增多,动态网页的类
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 搜索 设计 实现