基于物联网技术的智慧搜索引擎设计

2017-04-25 13:38齐勇军
电脑知识与技术 2017年2期
关键词:网络爬虫搜索引擎物联网

齐勇军

摘要:物联网应用发展迅速,已经与互联网技术相互融合。针对搜索引擎广阔的应用前景以及分析国内外搜索引擎的发展现状,根据搜索引擎系统的工作原理设计一种基于物联网技术的搜索引擎。对搜索引擎进行了相关的研究。一个搜索引擎由搜索器、索引器、检索器和用户接口四个部分组成。搜索器的功能是在互联网中漫游,发现和搜集信息。索引器的功能是理解搜索器所搜索的信息,从中抽取出索引项,用于表示文档以及生成文档库的索引表。检索器的功能是根据用户的查询在索引库中快速检出文档,进行文档与查询的相关度评价,对将要输出的结果进行排序,并实现某种用户相关性反馈机制。用户接口的作用是输入用户查询、显示查询结果、提供用户相关性反馈机制。结合搜索引擎发展现状分析了搜索引擎的系统功能需求,并进行了可行性论证,进而提出了基于java的技术方案,明确采用jsoup、elasticsearch、jfinal等相关开发技术;然后通过网络爬虫抓取数据下载到本地,建立索引;在系统实现环节,重点对需求分析中确定的主要功能模块进行代码编程、修改及优化;最后,设计了若干具体测试用例对系统进行了较全面的测试,验证设计效果。

关键词:物联网;搜索引擎;网络爬虫;索引器;jsoup

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)02-0274-03

随着信息技术与物联网技术的不断发展和融合,越来越多的产业与行业广泛应用了物联网技术,如工农业、智能家居、快递物流、设备监控等,物联网中包含很多实体,这就意味着海量的实时数据需要传输、存储及有效展示。面对越来越多的传感器及其所产生的数据,只有结合智能的物联网搜索,才能最大限度地实现这类数据的价值。

1 模块设计

本搜索引擎由四个模块组成,主要包括网页抓取模块,网页内容抽取模块,内容索引模块和内容呈现模块。系统的模块流程图1如下:

1.1 网页抓取模块

网页抓取模块主要完成对指定站点进行网页的抓取并将所抓取的网页保存到本地数据库。

本系统是从凤凰、腾讯、网易、搜狐新闻网上爬取相关的网页,输入凤凰、腾讯、网易、搜狐新闻网的页面的URL作为种子URL。通过分析凤凰、腾讯、网易、搜狐新闻网的网页URL的格式,对网络爬虫抓取和分析网页的行为进行一定的控制,限定应抓取的网页的URL格式以及限定能进入待爬取的URL队列的URL的格式。提高网络爬虫爬取速度可以通过改善URL的分配策略,使网络爬虫的并发线程增多。通过限制对Robot文件的访问,也是提高爬虫爬取网页效率的一个方法。网页抓取模块的功能需求如图2所示

1.2 网页内容抽取模块

网页内容抽取模块主要负责从本地文件所存储的网页中按照某种抽取规则抽取所需信息,并将所得到的信息按照特定的格式保存到数据库中。

通过对具有代表性的目标页面进行分析,制定信息抽取规则,实现对网页上各种内容的定位,抽取网页文本内容。构建网页信息词库,通过分词器解析抽取出所需网页信息内容,并将其写到指定词库文件中。将提取的网页非结构化信息转化成结构化信息存储到数据库中。

网页内容抽取模块的功能需求如图3所示。

1.3 内容索引模块

利用Luence索引工具对数据库中结构化信息建立索引文件,然后把创建好的索引文件保存到磁盘中,根据用户输入的查询条件在索引文件中进行查询,最终查询结果按照一定的顺序进行排序返回给用户。

网页内容索引模块的功能需求如图4所示。

1.4 内容呈现模块

通过jsp技术,以Web的形式展示用户界面,当用户在此界面输入关键词时,根据用户的关键词从数据库中匹配相关网页,把相关网页根据一定的排序规则返回显示在用户界面。

2 详细设计

2.1 网页抓取

网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要組成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止。该模块通过网络爬虫从凤凰、腾讯、搜狐、网易新闻网中的网页爬取我们想要的页面URL。爬虫开始时,我们添加种子URL到URL请求队列中,我们输入的种子URL为凤凰、腾讯、搜狐、网页新闻网的页面的URL。通过对凤凰、腾讯、搜狐、网易新闻网的页面的URL格式进行分析,当得到的URL地址满足凤凰、腾讯、搜狐、网易网页面的URL格式,则将它添加到URL请求队列中。

网络爬虫的工作流图如图5所示。

定制网络爬虫抓取凤凰网:

parser="org.webspider.parser.NewsIfengParser"

listener="org.webspider.listener.DbSpiderListener"

host="news.ifeng.com" forbidden="">

<![CDATA[http://news\.ifeng\.com/a/\d{8}/\d+_\d{1}\.shtml]] >

<![CDATA[http://news.ifeng.com/]] >

2.2 网页信息抽取

网页内容抽取主要负责将本地文件所存储的网页中按照某种抽取规则抽取所需信息,并将所得到的信息按照特定的格式保存到数据库中。

遍历存储所抓取网页的本地文件夹,如果遍历到网页,则运用jsoup对网页的标题,作者,时间,正文实现定向抓取。将抓取的内容保存为.txt文件存放到指定文件夹中。将抓取到的内容,如网页凤凰网新闻的标题,作者,发布时间,正文,链接地址,分别存入到数据库news表中的相应列。

网页信息抽取流程图6如下。

实现的关键代码:

public class DefaultParser implements Parser{

@Override

public List> parse(Page page) {

//创建一个List,存放解析出来的Map

List> datas = new ArrayList>();

//通过网页的html,创建一个Document

Document doc = Jsoup.parse(page.getContent());

//创建一个map,用于存放解析的具体字段

Map data = new HashMap();

//把网页的原始url放入map

data.put("origin_url", page.getUrl());

//利用jsoup的选择器,提取标题title这个元素

Elements title = doc.select("title");

//得到标题的文本,并放到map里去

data.put("title", title.text());

//解析得到的map,放入list里去

datas.add(data);

//返回解析结果List

return datas;}}

2.3 内容索引

利用Luence索引工具对数据库中结构化信息建立索引文件,然后把创建好的索引文件保存到磁盘中,根据用户输入的查询条件在索引文件中进行查询,最终查询结果按照一定的顺序进行排序返回给用户。

实现的关键代码:

/*索引一个索引库的数据 * * @param indexConfig Index */

private void indexData(Index index) throws Exception {

StringTokenizer stFetcher = new StringTokenizer(index.fetcher, FETECHER_SPLIT);

while (stFetcher.hasMoreTokens()) {String strFectcherName = stFetcher.nextToken();

Fetcher iFetcher = (Fetcher)new ObjectUtility().newInstance(strFectcherName);

int records = iFetcher.doIndex(index);

LOG.info(index.name + ", Index Records:" + records + ", Fetcher Class:" + strFectcherName);

} }

2.4 搜索引擎界面设计

本搜索引擎界面简单清新。其效果图如图8所示。

3 结束语

针对物联网技术产生的大量数据,设计了一种搜索引擎,并将核心功能完成,能应用于实际。本搜索引擎有如下功能:

1)通過对网络爬虫的扩展满足自己从网络站点抓取相关信息的要求

2)通过jsoup网页解析工具实现对目标网页进行抽取,并将抽取内容保存到数据库中。

3)通过luence检索工具完成对存储在数据库中信息的索引,最后通过jsp向用户展示所抓取并过滤后的信息。

4)与MYSQL数据库结合使用,减少企业的开销成本,同时,在数据处理方面,MYSQL数据库提供了很大的优势,在数据的返回处理方面,减少了结果集的负担,同时,也加快了数据的传输。

5)系统界面简单美观。

最后,本文通过对搜索引擎的分析与测试,表明对基于JAVA的搜索引擎的设计与实现是成功的,该搜索引擎性能稳定,高效。

综上所述,本课题成功地实现和设计了基于JAVA的搜索引擎,并结合了MYSQL数据库的使用,软件的UI交互设计友好。

参考文献:

[1] 袁津生, 李群, 蔡岳. 搜索引擎原理与实践[M]. 北京: 北京邮电大学出版社, 2008, 11.

[2] 郑宇卫. 基于Lucene构建的Web服务搜索引擎[J]. 电脑编程技巧与维护, 2015.

[3] 任丽芸. 搜索引擎中文分词技术研究[D]. 重庆: 重庆理工大学, 2011.

[4] 邱哲, 符滔滔. 开发自己的搜索引擎--Lucene 2.0+Heritrix[M]. 北京: 人民邮电出版社, 2007-06.

[5] 桂许军. 基于JavaEE平台与Lucene的信息文档搜索引擎系统的设计与实现[D]. 成都 西南交通大学, 2011.

[6] Cay S.Horstmann, Gary Cornell.Core Java 2, Volume 1-Fundamentals,6E[M].Prentice Hall/Pearson, 2003.

[7] Bruce Eckel. Thinking in Java[Z].4th ed. 2007.

猜你喜欢
网络爬虫搜索引擎物联网
炼铁厂铁量网页数据获取系统的设计与实现
中国或成“物联网”领军者
网络搜索引擎亟待规范
Nutch搜索引擎在网络舆情管控中的应用
基于Nutch的医疗搜索引擎的研究与开发
广告主与搜索引擎的双向博弈分析