SCI论文(www.lunwensci.com)
摘 要 :本文以互联网计算领域的网站内容为采集对象,基于开源全文搜索软件 Lucene 设计并实现了具有专门搜索功能 的搜索引擎。本文在采用 Fish Search 算法主题相关性搜索策略基础上提出正则规则的搜索策略,采用域名地址搜索策略和广 度优先搜索策略,增加更深度的人工分析,提高了垂直搜索引擎的有效性。
Vertical Search Engine Design for the Computer Field
JIANG Hua
(Binzhou Vocational College, Binzhou Shandong 256603)
【Abstract】: This paper takes the website content in the field of Internet computing as the collection object, based on the open source full-text search software Lucene design and realizes the search engine with special search function. This paper puts forward the search strategy of regular rule based on the subject correlation search strategy of Fish Search algorithm, adopts the domain name address search strategy and breadth first search strategy, adds a deeper manual analysis, and improves the effectiveness of vertical search engine.
【Key words】:search engine;vertical search engine;web spider;Lucene
0 引言
搜索引擎是用来帮助互联网用户查询信息的搜索工 具。以一定策略在互联网上搜索和发现信息,理解、提 取、组织和处理信息,为用户提供检索服务 [1]。近年来, 针对特定领域的垂直搜索技术成为热门研究方向。垂直 搜索引擎迅速发展, 如 Scirus、Citeseer 等搜索引擎, 涉及的专业领域很多,权威人士认为垂直搜索引擎将是 未来搜索的主力发动机系统 [2]。
虽然计算机的技术网站众多,但搜索结果中仍存在 大量的无效信息 [3],搜索准确率和用户满意度较低。本文 提出了一种基于 Lucene 的计算机领域垂直搜索引擎的设 计方案,收集了大量技术网站的网页的权威信息,对其信 息进行综合整理,为用户提供相关知识搜索,放弃无关信 息,加速用户在搜索结果中找到更准确信息的能力。
1 IT 行业垂直搜索引擎设计
1.1 面向 IT 行业的垂直搜索引擎需求分析
IT 行业相关问题的解决方案往往通过通用搜索引 擎、技术论坛、知识问答形式得到答案。一般的搜索引擎会提供大量无意义数据,增加在这些数据中找到充分 答案的难度 ;没有任何技术论坛或知识问答可以涵盖所 有问题 ;用户搜索的答案需要更多文本信息。本系统主 要针对 IT 行业寻求答案的人,利用垂直搜索的思想和 技术,提出了 IT 行业垂直搜索引擎的设计方案。
1.2 垂直搜索引擎收集器设计
1.2.1 垂直搜索引擎研究策略
垂直搜索引擎将主题相关性作为网络蜘蛛的主要搜索 策略 [4],因此必须首先为蜘蛛分配一个主题类别,再根据 主题相关性搜索策略抓取和收集网页。在提高垂直搜索引 擎的自动化和智能化、减少人工干预的同时,也趋向于通 用搜索引擎的盲目化,缩小搜索范围和用户体验。本设计 采用域名地址搜索策略将搜索范围限制在同一网站, 并采 用广度搜索策略提高有效性,基于 Fish 搜索算法的主题 关联搜索策略, 提出了正则规则搜索策略并增加了更深度 的人工分析,以提高垂直搜索引擎的完整性和有效性。
1.2.2 采集器的设计
采集器的主要任务是创建一个网络爬虫,根据设置的参数采集信息,登记到网页信息数据库中。对于收集 的网页,分析网页中的服务器信息、域名、标题、正文、 超链接等内容,进行主题相关联分析和索引。搜索引擎信 息采集过程可以由管理员管理。采集器启动后,会将设置 好的初始 URL 加入到未爬行队列中,首先获取 URL 服 务器信息和域名信息并保存,然后从未爬取队列中不断 抽取 URL,优先使用域名提取 URL 名称查找策略(限 制爬取范围为同一个网站),丢弃不符合要求链接,对 剩余 URL 使用正常查找策略判断是否符合收集网页要 求的数据库,最后进入主题相关策略判断,为否,直接 进入主题相关策略判断,根据主题相关判断结果,将本 页面的二级超链接添加到非队列爬取中。这样,抓取工 具从未抓取的队列中获取 URL,直到队列为空。
1.3 垂直搜索引擎索引器设计
1.3.1 全文检索引擎 Lucene
Lucene 是 Apache 软件基金会开发,完全开放源 代码的全文检索软件包。Lucene 并不是一个完整的全 文检索系统,只是一个组件,所以在集成到应用程序时, 须根据系统的需求设计数据结构。Lucene 在搜索引擎中 充当索引的建立和查找工具角色。其系统结构 [5] 如图 1 所示。
1.3.2 采集器抓取的内容
面向计算机领域的垂直搜索引擎定制采集器抓取的内 容包括 :网页地址、Meta 中的 Charset、Title、Body。 网页地址用于搜索结果显示给用户链接,此数据不需要 索引存储 ;Meta 中 Charset 是网页源码字符类型,用 于下载网页代码时设置字符流类型,此字段要在采集数 据前首先获取,不用于建立索引 ;Title 是建立索引的 重要数据,此数据经过分词、索引并存储在索引数据 库 ;Body 数据也要分词后建立索引,但不存储索引数 据库中,在关键浏览部分提供给用户查询结果。
1.3.3 检索器设计
系统恢复模块是用户与系统交互的接口,为用户提 供恢复服务。当用户在首页输入关键词搜索,系统会调用 Lucene 解析用户提交的查询关键词组成的逻辑表达 式,生成系统内部的查询条件类 Query all ,然后系统 会调用 Lucene 的 Search 入口查询索引并返回结果, 最后将搜索结果排序并显示给用户。
2 打造面向 IT 行业的垂直搜索引擎
2.1 采集器任务流程
本系统采集器基于 Fish 算法,结合正则规则算法, 主要业务流程为 :
(1)设置三个队列 :未扫描、扫描和错误队列。
(2)管理员设定初始 URL 并送未爬行队列,设置 采集正则规则、内容抓取页面结构参数,启动采集器。
(3)获取并保存初始 URL 服务器及域名信息(限 制爬行在一个服务器或一个顶级域名下)。
(4)如果未爬行队列不为空则从未爬行队列取一个 URL(此处以单线程描述),判断是否与初始 URL 为同 一服务器下和同一顶级域名下。为否则直接抛弃此链接 送入错误队列,接着从未爬行队列取下一 URL ;结果 正确,进入(5)。
(5)判断此链接是否符合采集正则规则,若符合下 载此页面,采集页面时按照内容抓取页面结构参数进 行,保存页面数据库,进入(6) ;否则直接进入(6)。
(6)获取此页内所有超链接,采用 Fish Search 算法 判断此页主题相关性,根据结果把此页内的所有超链接插 入未爬行队列,为防止爬行和采集重复,在放入前要与未 爬行队列、错误队列和已爬行队列比较,若存在直接抛弃。
(7)此页面分析完毕,返回(4)重复执行,直至 未爬行队列为空。
采集器为索引器采集、保存的信息结构为文本类型, 第一行为此页面地址,第二行为网页标题,最后为网页 内容。
2.2 网页字符集设定
每个网页都有字符集,这个数据在网页源码的 里。在采集网页时没有字符集的设定将会 出现乱码现象。在开始抓取网页时,先要读取网页字符集类型, 实验证明, 采用java.url 包中的 getContentType 方法获取字符集类型,会出现采集乱码,此处直接获取 字符,截取其中的 Charset 值。
2.3 收集规则和结构参数
正则规则和结构参数的收集以 CSDN 的博客网站 来做详细描述。CSDN 博客网站主要收集用户的博客文 章。管理员设置初始 URL 为 http://blog.csdn.net/, 而 用户的博文地址具有共性。这些相同点和不同点可以用 正则表达式表示, 如 http://blog.csdn.net/keminlau/ archive/2009/10/22/4715562.aspx, 后台设置界面时指定 同点原地址用“*”代替, 收录这个博客的正则为 :http:// blog.csdn.net/*/archive/*.aspx。若博客限于当天采集, 可写成 http://blog.csdn.net/*/archive/2009/10/22/*.aspx, 这个正则就是为了采集 2009 年 10 月 22 日的用户博客。 2.4 收集器类的设计收集器模块设置包为 specialtySpider, Spider 类设置 三个队列,即等待、处理和错误队列,定义队列get方法;队 列插入URL 的 addURL方法;process URL 的processURL 方法,对 URL 起始位置进行处理,包括 :建立 URL 链 接、获取网页字符集、获取字符流等。还有收集器的线 程启动和暂停方法 ;清除队列的清除方法。Spider 类 图如图 2 所示。
2.5 系统索引的建立
系统索引的建立过程如下 :
(1)在对网页信息数据进行索引时,管理员需要设 置相应参数 :索引存储路径、数据路径和方法。索引存 储路径就是索引文件要保存的位置 ;索引数据路径为待 索引网页的数据路径 ;索引方法包括新建和添加索引。
(2)从网页信息库中读取数据,创建一个读取数据 的类,包括读取和处理数据的方法,数据的处理包括将 字符从全角字符转换为半角字符等方法和分词。
(3)建立系统与 Lucene 的交互接口。
(4) 为信息数据库创建索引。定义IndexWriter(), 通过它把索引写入 Lucene 数据库,并指定它的存储位 置和解析器。Lucene 的解析器包括 StandarAnalyzer( )、 SimpleAnalyzer( )、StopAnalyzer( ) 等, 实现文本解析, 可以判断如何裁剪单词。接下来定义一个文档,相当于二 维表中一行数据。文档中包含字段 Field, 相当于数据库 中的一列,即属性和字段。最后,使用 writer.optimize( ) 优化 IndexWriter。
2.6 检索器的实现
检索器调用 Lucene 搜索条目检索索引并返回提 取结果。搜索时,用户提交搜索关键词,调用 Lucene Query Analyzer 对用户提交的 Query 进行分析, 调用 IndexSearcher 类进行搜索, 返回结果为 Hits 类。然后它 可以访问 Document=>Field 中的内容。为要查询的索引目 录定义一个搜索器 (IndexSearcher 类),将其作为参数传递 给 Lucene 的 MultiSearcher 类, 调用 MultiSearcher 类 的 Search 方法搜索多个索引目录。MultiSearcher 的搜 索方法不仅可以调用检索器检索索引, 还可以对检索器 检索到的结果进行合并和重分类。
在查询类中新建一个搜索方法 (Strinn),返回一个结 果集,即数据库中的 ResultSet。它的参数是要查询的内 容, 主要有两个对象, 即 IndexSearcher 和 Query, 其中 Query 包含三个参数 :搜索内容、搜索字段和分析器。
随着垂直搜索引擎的发展,爬行策略、性能、效率 等都是垂直搜索引擎会遇到并需要解决的问题。如何设 计出性能更好、效率更高的爬虫系统将是垂直搜索引擎 的发展趋势。因此,将搜索引擎与智能技术相结合,建 立新的检索模式,综合运用信息检索、人工智能、网 络、分布式计算、数据库、自然语言处理等多个领域的 理论和技术,提供智能化、个性化服务的信息服务将是 进一步研究的方向。
参考文献
[1] 许翰林,王瑞,王佳丽,等.基于Lucene的新闻垂直搜索引擎 设计与实现[J].电脑编程技巧与维护,2018(2):50-52.
[2] 邱哲,符滔滔.Lucene2.0+Heritrix搜索引擎[M].北京:人民 大学出版社,2007.
[3] 王晓琴,李书琴,景旭,等.基于Nutch的农业垂直搜索引擎研 究[J].计算机工程与设计,2014.35(6):2239-2243.
[4] 武婷婷.一种基于Webmagic和Mahout的信息搜集与推荐 系统[J].软件导刊,2016.15(10):1-3.
[5] 李月琳,韩宏亮.从信息检索系统评估到知识服务平台评估 [J].图书情报工作,2019.63(1):52-59.
关注SCI论文创作发表,寻求SCI论文修改润色、SCI论文代发表等服务支撑,请锁定SCI论文网!
文章出自SCI论文网转载请注明出处:https://www.lunwensci.com/jisuanjilunwen/68562.html