搜我要搜索引擎内核软件设计说明书_第1页
搜我要搜索引擎内核软件设计说明书_第2页
搜我要搜索引擎内核软件设计说明书_第3页
搜我要搜索引擎内核软件设计说明书_第4页
搜我要搜索引擎内核软件设计说明书_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

搜我要搜索引擎内核软件

设计说明书、引言编写目的为了用户能够更快更方便更准确的获得想要的信息,本人独立自主开发了搜我要搜索引擎内核,主要使用了语义搜索等核心技术,并针对移动互联网的特点做了功能扩展。该设计说明书是对搜我要搜索引擎内核软件的设计说明,有利于该软件的开发和使用,并作为开发该软件的一个文档,同时它还将作为该产品设计与开发的重要参考依据。项目背景开发者:王志勇软件名称:搜我要搜索引擎内核软件搜索引擎名称:搜我要工程组织者:王志勇产品用户:互联网用户产品设计者:王志勇产品生产者:王志勇产品所有权:王志勇拥有定义搜我要——搜索我想要的;搜我要搜索引擎器一一以一定的策略在互联网中搜集、发现信息,对信息进行理解、提取、组织及处理,并且能为用户提供检索服务,从而起到信息导航的目的,一般包括信息搜集、信息整理和用户查询三部分。它主要用于帮助互联网用户查询信息的搜索工具索引器一一C#的简单组件,使用索引器,可以用索引数组的方式来索引对象,索引器提供了与数组访问相类似的类成员访问方式。控制器一一英文名称:controller,按照预定顺序改变主电路或控制电路的接线和改变电路中电阻值来控制电动机的启动、调速、制动和反向的主令装置。索引数据库——将文献中具有检索意义的事项(可以是人名、地名、词语、概念、或其他事项)按照一定方式有序编排起来,以供检索的数据库。语义搜索一一指搜索引擎的工作不再拘泥于用户所输入请求语句的字面本身,而是透过现象看本质,准确地捕捉到用户所输入语句后面的真正意图,并以此来进行搜索,从而更准确地向用户返回最符合其需求的搜索结果。网络爬虫一一又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者,是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁,自动索引,模拟程序或者蠕虫。参考资料《搜索引擎:信息检索实践:informationretrievalinpractice》一(美)W.BruceCroft,(美)DonaldMetzler,(美)TrevorStrohman著机械工业出版社《搜索引擎基础教程》一一袁津生,李群主编清华大学出版社《搜索引擎技术基础》一一刘奕群[等]编著清华大学出版社《C语言程序设计》一一郭晓利,孙玉钰主编北京理工大学出版社二、总体设计需求概述随着信息多元化的增长,互联网一天天的强大,几乎没有其不可达到的领域,尤其是搜索引擎扮演着十分重要的角色,没有出色的搜索引擎用户就不能检索到所需要的信息,没有良好的搜索布局就不会有更系统的网页数据,显然好的搜索引擎必须要以更系统的数据源为前提。作为一个重要的信息平台,网络内容不断丰富,整个网络逐渐堆积成一个前所未有的超大型信息库。因此怎样快速有效的从海量数据中找出所需的信息就变成一个困难的问题,搜索引擎正是为了解决“信息丰富,知识贫乏”奇怪现象问题而出现的技术。它已经成为信息领域的产业之一。搜索引擎有大量的用户,从而衍生出许多商机,具有很好的经济价值。需求分析:用户可以通过搜我要搜索引擎查询商品信息;(1)使用具体商品名称作为查询条件;(2)使用若干搜索条件进行筛选商品,如商城、价格区间、品牌、商品类别等。用户可以选择一种商品在各个商城进行价格比较,从而选择物美价廉的商品;在查询或比较结果中,可以点击结果中的一款,以得到其产品详细信息,并可以看到以下几项:(1)用户评论(多少人评论,评论内容,评论时间等)(2)搜我要搜索引擎的关注程度(3)销售榜和关注榜排名情况(4)商品详细描述(5)上市时间开发环境基于WindowsXPSP3、CentOS5.0操作系统5台HP64位服务器(Intel8核CPU、1T硬盘、4G内存、千兆网卡)MYSQL数据库采用C++/C语言开发软件结构3.1搜我要搜索引擎流程图建立索引和排序用户输入用户查询图1搜我要搜索引擎流程图3.2搜我要搜索引擎的体系结构图2体系结构图4前期处理流程图4前期处理流程图在网络爬虫程序把目标网页存到本地后,应该用处理程序进行初步处理,根据不同的字典来进行扫描,将html控制代码,多余的广告的无用信息去除,只保存有命中率的页面并存成纯文本格式,这样会提高索引准确率和效率。这里提到的字典是人工创建的,开发人员应将不同类别的关键词汇放到字典文件中,由前期处理程序读取并记录每个目标页面关键词的命中率,当所有关键词的命中率为0时,此页面将被丢弃,否则转换成文本格式以便建索引。如何建立字典?除了人们日常的词汇,开发人员应下载一些不同类别的目标页面,搜集最新关键词来丰富词典,从而提高字典的准确性。如果想要不同的分类,比如餐饮,电子和旅游,那么就要有三个字典,分别包含餐饮,电子和旅游的关键词。这样通过前期处理程序就会有三类文本文件,分别对应餐饮,电子和旅游这三类。也就意味着有三个分类索引,这样用户就可选择不同类别的搜索。这样用户可以选择不同类别来搜索,可以增大命中率。当然也可以选择所有类别来搜索。三、模块描述

图5搜索引擎总框图搜我要搜索引擎模块共分以下几部分:网页爬虫模块,词库的分类和训练,数据的分类和过滤,索引和排序,用户搜索模块。如5所示。首先用爬虫模块从初始的URL种子开始抓取,把抓取下来的网页内容进行分析,确定所需要的信息后再抽取为结构化数据,接着就对结构化数据进行中文分词和建立索引并生成索引库,最后制作网页供用户通过查询模块进行查询。3.1网页爬虫模块网页爬虫主要功能是实现不断的爬取网页。网络爬虫是搜我要搜索引擎中最核心的部分,整个搜我要搜索引擎的素材库来源于网络爬虫的采集,从搜索引擎整个产业链来看,网络爬虫是处于最上游的产业。其性能好坏直接影响着搜索引擎整体性能和处理速度。网络爬虫是从一个或若干个初始网页的上的URL开始,获得初始网页上的URL列表,在抓取网页过程中,不断从当前页面上抽取新的URL放入待爬行队列直到满足系统的停止条件。网络爬虫流程如图6所示。图6网络爬虫流程

中,不断从当前页面上抽取新的URL放入待爬行队列直到满足系统的停止条件。网络爬虫流程如图6所示。图6网络爬虫流程图7网络爬虫基本架构网络爬虫模块基本架构如图7所示,其各个部分的主要功能介绍如下:页面采集模块:该模块是爬虫和因特网的接口,主要作用是通过各种web协议(一般以HTTP.FTP为主)来完成对网页数据的采集,保存后将采集到的页面交由后续模块作进一步处理。其过程类似于用户使用浏览器打开网页,保存的网页供其它后续模块处理,例如,页面分析、链接抽取。页面分析模块:该模块的主要功能是将页面采集模块采集下来的页面进行分析,提取其中满足用户要求的超链接,加入到超链接队列中。页面链接中给出的URL一般是多种格式的,可能是完整的包括协议、站点和路径的,也可能是省略了部分内容的,或者是一个相对路径。所以为处理方便,一般进行规范化处理,先将其转化成统一的格式。链接过滤模块:该模块主要是用于对重复链接和循环链接的过滤。例如,相对路径需要补全URL,然后加入到待采集URL队列中。此时,一般会过滤掉队列中已经包含的URL,以及循环链接的URL。页面库:用来存放已经采集下来的页面,以备后期处理。待采集URL队列:从采集网页中抽取并作相应处理后得到的URL,当URL为空时爬虫程序终止。初始URL:提供URL种子,以启动爬虫爬虫基本信息配置爬虫基本信息配置主要是为爬虫程序在启动时设置爬虫的线程数,抓取页面的层数,索引文件路径等。当爬虫程序启动后,加载这些基本信息,以这种规则进行工作。图7主要分析该模块所涉及到各个类之间的

关系。顶层包::ConfigDAOImpl<<signal>>+getConfig()<<signal>>+modifyConfig()图7爬虫基本信息类关系图关系。例子说明简析页面源代码:定位的爬取目标是娱乐博文,故在首页的源代码中搜寻“娱乐”之后,发现了如下字段:<divclass="nav"><ahref="/"class="a2fblack">首页</a><ahref="/lm/ent/"target="_blank"class="fw">娱乐</a>解析html的方式:实现网络爬虫,顾名思义另要程序自动解析网页。考虑到垂直爬虫及站内搜索的重要性,凡是涉及到对页面的处理,就需要一个强大的HTML/XMLParser支持解析,通过对目标文件的格式化处理,才能够实现特定信息提取、特定信息删除和遍历等操作。HTMLParser,它是Python用来的解析html的模块。它可以分析出html里面的标签、数据等等,是一种处理html的简便途径。3.2词库的分类和训练模块需要人工提供训练资料,比如到各个团购网站上人工筛选和下载关键页面,保存到本地,这些html页面应该和此系统为最终用户提供的搜索结果非常相近,相近度越高,本系统的准确率越高。训练程序将会扫描这些html页面,根据统计算法来生成分词词库,一般来讲两个词的难度最大,分词词库的错误率也是最多,但只要随着训练数据的增加,此问题的出现频率会越来越少,因为作为正确两字词出现的频率毕竟大于错误词的出现频率。对于三个词和四个词以上,基本上是一些成语或固定用法,成功率较高。每个分词还有评分来表明分词正确率,出现频率越高的词评分越高,字数越多的词评分越高,这样当搜索引擎对一句话分词时,会根据句中每个可能的词的评分高低来断句,断句的结果必定是综合评分最高的分词方式。但由于中文的特点,连词,副词这些词汇肯定会是最高的评分,因此可以用一个通用词库来包括这些词汇从而避免专业词库的重复与冲突。词库还应有字典接口,为了缩短词库训练时间和提高准确率,可以从网上下载免费的字典及词库,并将其导入词库。词库应该是分类的,餐饮,服装和电子这些行业都应该有自己的词库,这样才能提高准确率,否则和百度这些通用搜索引擎相比没有任何优势。因此也就要求训练资料必须也是分类的,整个搜索系统应该有若干个词库来提供分类行业搜索功能。人工选择页面抓取分类'1生成纯文本文件分词程序生成词库和简化词库图8词库训练流程本人主要的任务是在爬虫模块,设计自己的网络爬虫,所以这部分比较详细。3.3数据的分类和过滤模块这里共分两部分:抓取和过滤分类。数据抓取是将目标网站相关的内容抓取到本地,过滤分类是在保存到本地之前将此页面分类,并将不相干的页面去除。现在有很多团购网站,靠人工抓取和过滤是不现实的,因此必须要有网络爬虫来实现。有许多开源的网络爬虫程序可供选择,如火车头采集器,larbin和heritrix。当数据抓取到本地后,应该做分类和初步过滤。这样数据就会按照不同的类别来存储,这样就可减少系统建索引的工作量。这里应该有若干个简化分类词库,这些简化词库应该是前面提到的词库的很小的子集,但足以包含这个类别的特征。比如可以将评分为前1000的单词取出来生成这个简化词库。系统应将这些的词库对目标页面进行命中扫描,如果某个类别词库的词汇在目标页面中出现的频率最高,这个页面就应归为此类别。所有的页面都要提取成纯文本模式以便搜索引擎建立索引。这些页面是存到数据库还是按照普通文件存储,还需要进一步讨论。另外抓取的页面有可能包含图片,flash,mp3或视频这些meta数据,是否需要也要保存是个问题。3.4索引和排序索引过程如图9所示。

r,啊Segmein的门息保存,州果仃多个偃r,啊Segmein的门息保存,州果仃多个偃1|判崎是否甫哽令■冲,如果需则合井之图9索引过程简图初始化流程如图10所示。图10IndexWriter的初始化过程当数据已经保存到本地,搜索引擎就可以对这些分类数据建立索引和排序。首先搜索引擎要根据专业词库对纯文本数据进行分词和断句,将识别出的单词们在索引文件中更新:把新加的文件ID,位置,和URL写入索引文件中,同时要对每个单词所有的结果进行再排序。

图9索引记录示意对于不能识别的单词可以按照单字词来建立索引。因为索引是作为文件的形式存在的,大小就会受操作系统的限制,例如在Linux下,文件最大的限制是4G。那么就要考虑多个索引文件共存的情况,建立二级索引就是必须的方法。在索引文件的基础上再建立二级索引,可以将搜索结果分配到多个索引文件上去。单词ID图10多个索引文件示意如果单机不能满足容量需求,可考虑建立三级索引来实现分布式索引。算法具体公式如下所示。Z/d).•boost{t.fieldind)•lengthNonn(t.fieldind)finq解释一下上面的公式。tf(tind)tf(TermFrequency)就是词条频率的意思,它表示着检索的词条在某个文档中总共的出现次数。在Lucene中,它的值是真实频率的平方根值。2.idf(t)idf(InversedDocumentFrequency)表示反转文档频率。具体代码如下publicfloatidf(intdocFreqfintnunnDocs){return(float)(Math.log(numDocs/(double)(docFreq+1))+1.0);两个参数docFreq和numDocs分别表示包括有当前检索的词条的文档总数和索引中总共的文档数量。3.boost(t.fieldind)boost指在建立索引时,对每个Field设置的一种激励因子。它的默认值为“1”。它增加某个Field的重要性,同时也就增加了该文档的重要性。重要性的增加就是指增加了文档的得分。3.5用户搜索模块搜我要搜索引擎提供给用户以下几种搜索模式:1•按商品价格搜索商品信息取得在搜索本文框中输入的价格范围查询在此价格范围内的商品信息按商品名称搜索取得在搜索本文框中输入的商品名称查询对应此商品名称的商品信息按商品名称和价格搜索取得在搜索本文框中输入的商品名称和价格范围查询对应此商品名称的并且在此价格范围内的商品信息按商品分类查看根据点击的商品类别,显示出对应此类别的相关商品信息(超链),点击超链还可查询对应的详细信息按商品名称查看根据点击的商品名称,显示出对应此商品名称的所有信息面向用户部分功能:注册登录功能。消费者首先要注册为用户。注册时只要填写登录用户名、密码、联系电子信箱3项信息即可。注册后登录,用户可继续填写详细个人信息及收货人信息,同时可修改密码、查询。商品评价功能。用户购买商品后可对购买的商品质量、包装、服务态度等进行评价,打分

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论