《网络搜索引擎的设计和各部件的实现,搜索引擎论文.docx》由会员分享,可在线阅读,更多相关《网络搜索引擎的设计和各部件的实现,搜索引擎论文.docx(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、网络搜索引擎的设计和各部件的实现,搜索引擎论文随着互联网技术的飞速发展,互联网中的信息量也越来越大,怎样愈加有效地利用这些信息资源,已经越来越遭到人们的关注。互联网中存在的信息来源特别广泛,与此同时,存在的形式也是多种多样,包括图像、文本、视频、音频等不同的形式,面对着不同来源,不同形式的海量信息,怎样准确、快速地找到自个所需要的信息成为我们在使用互联网时候所面临的一个问题,因而,开发一个搜索引擎就非常必要。当前,成熟的搜索引擎如 Lycos、Yahoo、Google、百度等各有优点,如 Google 比 Yahoo 能更快、更准确搜索到所需信息,百度中文搜索引擎支持网页信息检索,图片,Fla
2、sh,音乐等多媒体信息的检索等,而本文搜索引擎的开发是通过网络爬虫抓取信息,然后再通过一定的技术对网页信息进行提取、处理,将抓取到的信息存放在索引数据库中,通过一些查询接口实现信息检索,帮助用户在海量的信息中迅速地、准确地找到用户真正感兴趣的信息。 1 搜索引擎的设计 1.1 搜索引擎构造设计 搜索引擎是指根据一定的策略、运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信息展示给用户的系统。 搜索引擎主要包括全文索引、目录索引、元搜索引擎、垂直搜索引擎、集合式搜索引擎、门户搜索引擎与免费链接列表等。全文搜索引擎是当前广泛应用的主流搜索引擎。
3、它能够对被索引的文章中的每一个词建立索引,在用户检索时,检索程序就会根据事先建立好的索引进行查找,并将查找的结果反应给用户。本文的主要工作就是使用 Java 设计并实现了一个 Web 全文搜索引擎,搜索引擎构造设计如此图 1 所示: .1.2 网络蜘蛛构造设计 开创建立搜索引擎的第一步就是要设计一个程序在海量的互联网信息中遨游,并抓取网页信息。这个程序被称为网络蜘蛛,网络蜘蛛也被称为自动搜索机器人,它主要用于分析网页上的每一个超链接,并根据超链接链到其他网页中的超链接,网络蜘蛛构造设计如此图 2 所示:. 1.3 索引器构造设计 搜索引擎对网络蜘蛛抓取到的网页信息进行整理,这一经过称为 开创建
4、立索引 。索引器构造设计如此图 3 所示: 1.4 检索器构造设计 搜索引擎每时每刻都要收到来自大量用户的几乎是同时发出的查询,它根据每个用户的要求检查自个的索引,在极短时间内找到用户需要的资料。检索器构造设计如此图 4所示: 2 网络蜘蛛的实现 2.1 网络蜘蛛爬行策略实现算法 互联网能够看成一个超级大的 图 ,网络蜘蛛的遍历网页算法采用图的宽度优先遍历(BFS)算法,其爬行策略实现算法如下:. 1将入口 URL 入队至待访问 URL 的队列中去。 2URL 从待访问 URL 队列出队,使用开源 解析库 Parser 对给出的入口 URL 进行解析,判定抓取到的 URL 能否在已访问 URL
5、 集合中,若不在,则将 URL存储在待访问 URL 的队列中去入队,若存在则什么也不做。 3使用 Parser 对出队的 URL 进行解析,解析该URL 的标题、内容、本文关键词语、开创建立时间等信息。 4使用 Lucene 为 Parser 解析到的网页信息开创建立索引。 5出队的 URL 添加至已访问 URL 集合中去。 6重复25的经过。 2.2 网络蜘蛛的详细实现 1数据构造:队列和散列表哈希表 首先要构建用于存储抓取到的URL待访问的URL队列,在构建队列时需要考虑下面两方面因素: 1队列中将要存储的元素个数非常之多并且数量无法确定;2在队列的队头和队尾处经常进行删除和添加操作。 针
6、对以上两点,使用 java 集合类 LinkedList 的链式存储构造来实现未访问 URL 队列。这个未访问 URL 队列主要用来存储爬虫抓取到的 URL,通过一系列的出队入队操作实现对网页的宽度优先遍历。 2要构建散列表。在根据未访问 URL 队列对 URL进行抓取和解析的时候,还需要一个数据构造散列表来存储已经访问过的URL来避免对同一个URL的重复抓取和解析。 在 URL 从未访问队列出队以后,首先,判定一下,它有没有在这个数据构造中,只要当该 URL 不在这个已访问 URL集合中时才对其进行其他操作。否则,将该 URL 丢弃。这个数据构造需要具有下面两个特点: 1构造中存储的 URL
7、 不能够重复。 2由于 URL 数量诸多,考虑到查找性能问题,需要该构造能够快速地查找。 针对以上两点,采用 Java 集合类 HashSet 来实现存储已访问 URL 的散列表集合类。 这个已访问 URL 集合主要是记录网络蜘蛛已经访问过的 URL,在网络蜘蛛访问一个从未访问 URL 队中出队的 URL 时,首先判定一下这个 URL 能否已经在已访问 URL 集合中存在,不存在的时候再进行访问,这样能够避免对同一URL 屡次不必要的访问。 3网络蜘蛛抓取网页 Parser 是用一个纯 java 写的 解析库,它不依靠于其它的 java 库文件,主要用于改造或提取 。它能超高速解析,而且不会出
8、错。使用Parser的链接提取功能提取网页中的链接的经过如下: 1开创建立过滤器,过滤 a 标签中的 URL:NodeFilter filter = new TagNameFilter( a 2开创建立解析器:Parser parser = new Parser();3使用 parser.setURL(url)和 setEncoding()设置需要解析的 URL 和编码方式;4获取解析的结果:NodeList list = parser.extractAllNodesThatMatch(filter);5遍历得到的解析结果;6在将解析到的 URL 存入未访问 URL 队列之前需要对其进行一些检
9、查,把一些错误的链接或者是无法访问的链接过滤掉。 3 索引器的实现 使用 Lucene 开创建立索引,Lucene 是一个开放源代码的全文检索引擎工具包6-8,即它不是一个完好的全文检索引擎,而是一个全文检索引擎的架构,提供了完好的查询引擎和索引引擎。Lucene 提供了五个基础的类,对文档进行索引,以下为使用 Lucene 为 Doc 实例开创建立索引的相关操作。 1开创建立分词器,这里使用的是 Lucene 默认的分词器;2设置 IndexWriter 类的相关配置: 3设置索引的保存途径: 4开创建立 Lucene 索引器:IndexWriter writer = newIndexWri
10、ter(dir, iwc);5开创建立 Document 对象:Document doc = new Docu-ment();6为 Document 对象添加 Field 域;7 添 加 Document 至 索 引 器 中 去 : writer.addDocument(doc);8关闭索引器:writer.close();4 检索器的实现. 4.1 使用 Lucene 执行检索 1开创建立 IndexReader 对象读取索引器开创建立的索引;2开创建立分词器 Analyzer 对用户输入的字符串进行分词处理;3使用 IndexReader 对象开创建立检索器 IndexSearcher;4
11、使用分词器 Analyzer 开创建立 QueryParser 对象,解析用户输入的检索字符串;5获得解析检索字符串返回的 Query 对象;6使用 Query 对象执行检索将默认排序结果放置到TopDocs 结果集;7得到检索结果总数量:hitsSize = results.totalHits;。 4.2 高亮显示检索结果 1设置高亮显示 标签2开创建立高亮显示对象:Highlighter highlighter = newHighlighter(formatter, scorer);3设置高亮显示附近字符串大小:Fragmenterfragmenter=new SimpleFragment
12、er(200);4设置高亮:highlighter.setTextFragmenter(fragmenter);5 检索测试. 用户能够在检索器的文本框内输入需要检索的本文关键词语,点击搜索按钮,检索器将自动显示与本文关键词语相关的检索结果,搜索 上海车展 检索器返回检索结果效果。如此图 5 所示:. 6 总结 搜索引擎是一种信息检索服务系统,它能够帮助用户在互联网上快速地查找对自个有用的信息。通过网络爬虫抓取信息,然后在通过一定的技术对网页信息进行提取、处理,将抓取到的信息存放在索引数据库中,通过一些查询接口实现信息检索。本搜素引擎的设计与实现是基于全文搜索进行的,设计了网络蜘蛛、索引器和检
13、索器的构造,并利用 Java 语言进行了搜素引擎的实现,通过检索实验,检索速度 =200ms,该搜索引擎是一个比拟高效的检索工具,但是系统实现的网络蜘蛛并非真正意义上的全自动,而是必须给定网页入口并告诉网络蜘蛛要抓多少张网页,它才能正常抓取网页,同时检索策略有待进一步改良,以便进一步提升检索速度。 以下为参考文献 1 孙宏.搜索引擎技术与发展综述J.计算机光盘软件与应用,202014:10-15. 2 李国芳.全文搜索引擎快速搭建的设计与实现J.计算机与当代化,202011:18-21. 3 克罗夫特(美).搜索引擎:信息检索实践M.北京:机械工业出版社, 2018:69-83. 4 李浩.网络蜘蛛的研究与实现J.科技信息,202026:18-23. 5 陈建峡.基于 PageRank 的 Lucene 排序算法优化与实现J.计算机工程与科学,202010:19-23. 6 刘敏娜.基于 Lucene 的中文分词技术改良J.咸阳师范学院学报,202002:25-28. 7 麦肯德利斯等(美).Lucene 实战M.北京:人民邮电出版社,2018:53-92. 8 于天恩.Lucene 搜索引擎开发权威经典M.北京:中国铁道出版社,2008:134-182.
限制150内