这一章将基于 Solr1.3 来设计一个在同一个服务器对两个大学(北京大学、中山大学)网站进行搜索的合成搜索引擎。主要目的是要利用 Solr1.3 的多核心特性来设计一个多索引库的应用场景。 本设计无意追求真实场景中的搜索性能,只是提供一种基于 Solr1.3 开发多应用搜索引擎的思路。 设计注重管理与普通使用的分离, 将所有管理操作都纳入同一个 Web 页面下以提供管理的方便性,同时尽量考虑将来的扩展需求。
1、整体结构与模块关系
基于 Solr1.3 的搜索引擎实现的结构,是常用的一种结构,该结构具有索引更新、索引删除、查询、分词、网络蜘蛛、索引库、New API、Solr Core API 八大模块(由于管理员页面与普通用户查询页面只是简单的 HTTP 接口调用,所以不将他们算作单独模块)。 这八大模块中除 SolrCore API 模块外,其他模块都是我们需要实现或配置的 .
图中的箭头表示模块间的调用关系, 虚箭头处意在说明这里的调用是通过修改配置文件由 Solr1.3 内部实现的,至于其如何去调用,我们不必去理会。
该结构中索引更新、 索引删除和查询模块主要使用Servlet 技 术实现 ,Servlet 一 方面通过 Java 代码调用 NewAPI 模块和网络蜘蛛模块 , 另一方面对外提供 HTTP 调用接口。 New API 层存在的原因是:Solr Core API 接口提供高内聚、低耦合的特性的同时,接口的参数类型过于复杂且参数类型不宜普通开发者理解,New API 层对 SolrCore API 进行重新包装使得参数更容易理解 , 同时它实现的功能是 Solr Core API 的子集也使得接口更加简化。
2、三大功能模块
搜索引擎从总体而言, 主要可以分为 3 大主要功能模块:网页抓取模块(Web Spider)、信息抽取和索引模块、查询页面和查询的算法。 这 3 大模块代表着搜索是否能够快速的满足用户的需求,也代表着整个搜索引擎品质。如图 1.
(1)网页抓取模块(Web Spider)
该模块是从互联网的海量信息当中, 找到与搜索主题相关的网页。 建立起相应的索引, 以便提供给用户查询。 此过程中需要进行强大网页抽取功能。 这需要抓取模块---网络蜘蛛、网络爬虫具有强大的网页分析和检索功能。 通过净化和抽取, 将符合标准规范的网页存储入数据库当中。
(2)信息抽取和索引模块
该模块是利用已经生成的数据库进行索引, 以便提升查询的效率和减少查询的时间。 本模块属于承前启后的作用,是搜索引擎当中最为重要的模块,前一步的要求的是对网页进行数据抽取,后一步的是对已经抽取的数据进行大规模的数据索引。 通过建立起大规模的结构化和非结构化的数据提取相应的数据信息。 并对检索要求的数据进行分词、排序等大规模的数据整理工作。
(3)查询页面和查询的算法
用户通过第二步的索引建立, 已经建立出一个具有较快速的查询方案,本步骤的主要要求是如何使用已经建立起的索引模块,因此提升查询速度和查询效率是本步骤中最为关注的重点。 当然, 与用户之间的界面交互也是查询页面的设计内容之一。
三、搜索引擎详细设计与实现
1、网络蜘蛛模块的设计与实现
目前, 互联网上有许多开源的网络蜘蛛, 例如Heritrix. 虽然它们功能很强大 ,但是使用与改造都十分复杂,索引本文不使用这些复杂的网络蜘蛛工具来实现而选择自己编写简单可用的网络蜘蛛。 网络蜘蛛模块采用广度优先法实现。 实现该爬虫的类为 Spider,对外提供nextPage()方法返回一个获取的网页。 底层网页解析部分功能使用了开源的工具包 htmlparser.
爬虫以网站首页 URL 为构造函数的参数,这决定了爬虫将以此 URL 作为爬行的起始点。 爬虫的 nextPage()方法返回一个 Page 对象,它代表一个满足条件的可以被索引的网页。 爬虫 nextPage() 方法的工作流程为:从未处理 URL 队列中提取出一个 URL –>分析该 URL 以提取出新的 URL,如果新的 URL 未在已处理 URL 队列出现,将新的 URL 交给过滤器, 将过滤后的 URL 添加到未处理 URL 队列–>将当前处理的 URL 添加到已处理 URL队列–>提取出文字与标题, 构造 Page 对象并返回该对象。
2、New API 模块的设计与实现
New API 模块主要是简化原有调用结构, 使得参数更加贴近实际需求。 也就是说我们的传入参数是我们熟悉的(如标题,内容,关键字),查询返回结果也是我们熟悉的类型。 New API 模块的实现过程中一个重要的部分就是参数类型的转化, 以使得外层参数与内层参数衔接起来。
New API 通过类 DirectAPI 来实现。MyQueryResult 类型是自定义的返回结果类型,我们通 过 对 XML 结 果 的 解 析 , 提 取 出 所 需 信 息 包 装 成MyQueryResult 对象,在生成用户友好的页面响应结果的时候,可以方面地通过该对象获得所需数据。
3、管理模块的设计与实现
管理模块是给管理员和开发者使用的, 管理利用该模块来添加、更新、删除索引和进行查询操作。 为提高管理的方便性, 管理模块提供 Web 界面,Web 页面通过调用 Servlet 来达到操作效果。
4、 配置文件的配置
配置文件包括 schema.xml、solrcofig.xml、solr.xml. 在本应用中,由于有两个库(sysu 和 pku),所以需要在 solr.xml 中配置两个库。 搜索器和索引器相关参数使用默认设置,所以不需要对 solrconfig.xml 进行特别设置。
schema.xml 文件需要两个 fieldtype:string 和 text. 其中 text 指明该类型使用中文分词类进行分词;field 有四个:id、url、text、title;类型分别为 string、string、text、text. id字段表示文档序号,url 表示网页的连接地址,title 和 text为网页的标题和内容,后两者是需要分词和建立索引的。默认的搜索字段为 text, 这样我们就可以搜索某个网页的文字信息了。
5、分词模块的设计与实现
分词模块是中文搜索引擎中极其重要的模块, 搜索的效果很大程度上决定与分词的效果,但是自主研发中文分词需要非常雄厚的技术实力,一般开发者是无法自主研发的。 这里我们选择使用开源的中文庖丁解牛工具包来实现。
分词模块实现步骤如下:
1. 下载“庖丁解牛”分词包,按照配置教程设置好环境变量和用户词典。
2. 然后将分词包添加到工程, 修改中文分词类 org.apache.solr.analysis. ChineseTokenizerFactory,使 用用中文庖丁解牛工具包来实现。
3. 最 后配置 schema.xml 中需要分词的 域类型使用该分词类即可。
6、 查询模块的设计与实现。
用户通过查询页面 (search.jsp) 的表单向服务器SearchServlet 发送查询请求。 服务器收到请求后,获得查询的参数, 调用 DirectAPI.queryAndReturnMyQueryResult获得查询结果 MyQueryResult 对象, 然后从该对象获得结果信息,并重设 request 使它包含结果信息。 最后将请求转向结果显示页面(ResultShow.jsp)。
结论
搜索是互联网发展时代的主题, 也是当前大数据挖掘时代的主要支持对象。 随着因特网的技术不断发展和更新,利用网络来获取各种资源的信息已经成为了人们生活、 工作中最为常见的活动。 人们利用各种检索来的信息,分析信息和发展信息,最终达到合理利用资源的手段和方法。 我们可以预计, 在未来人们对于搜索网络信息的搜索引擎要求越来越高,搜索的内容也越来越复杂,搜索引擎的发展也一定会随着时代的发展,以用户为核心的计算不断延伸和发展。(图略)
参考文献:
[1]汪晓平,钟军。JSP 网络开发技术。人民邮电出版社,2003:103-178
[2] 周 晓敏 .DreamWeaver?MX 应 用培训教程 . 电 子工业版 ,2002:55-71
[3]黄日昆。网络引文搜索引擎 CiteSeer 评析。情报杂志。南宁,2004:1-4
[4](美)亨特,(美)罗夫特斯。精通 J2EE.清华大学出版社,2004:256-299
[5](美)马丁。Servlet 与 JSP 核心技术。人民邮电出版社,2001:66-89
[6]资讯教育小组。JSP 与 SQL 网站数据库程序设计。科学出版社,2002: 202-297
[7]飞 思科技。JSP 应 用开发详解。电 子工业出版社,2005:345-358
[8]李博。JSP 应用开发指南。科学出版社,2003:45-123
[9]邓 子云,张 赐。JSP 网络编程从基础到实践。电 子工业出版社,2006:56-280
[10]宋 杰,王 大玲,鲍 玉斌,申 德荣。基 于页面 Block 的 Web 档案采集和存储。电子工业出版社,2008:275-290
经过3~5年的飞速发展,目前桌面搜索和移动搜索几乎各占半壁江山,移动搜索大有赶超桌面搜索,成为主要搜索途径之势。2013~2014年中国搜索引擎行业竞争持续升级,百度独领风骚的同时,几大追随者毫不懈怠,持续练就内功,同时借助外力,以期对百度构成威胁...
本文从卷烟企业对信息数据检索的需求出发,论述了基于Solr开发出符合自身企业的搜索引擎的可行性,介绍了有关搜索引擎及Solr的相关知识。...
0引言信息检索系统主要为互联网用户提供对资源的检索服务,用户通过输入自己想要寻找的资源信息(诸如资源的部分名称,资源内容中相关关键词等),信息检索系统根据用户提供的检索需求进行资源匹配和资源定位,并按照一定的顺序将匹配的资源反馈给用户。搜...
1语音信息及其特点自然界存在着各种各样的声音,对声音进行数字化处理得到的结果称为音频,是一种重要的计算机多媒体信息。20Hz~20kHz是正常的人耳能够感知合理频率范围。音频信息中的一种重要类型为语音,具有以下重要特征:(1)由高度抽象的概念交流...
1引言互联网的深入发展带来了各种类型信息资源数量的快速膨胀。截至2014年6月,我国拥有273万个网站,3.3亿个IPv4地址[1].面对浩瀚巨量的网络资源,用户通过搜索引擎快速获取所需信息尤为重要。目前,我国搜索引擎用户达4.9亿;网民平均使用...
1引言在线社交网络是一种在信息网络上由社会个体集合及个体之间的连接关系构成的社会性结构。在线社交网络可分为4类:1)即时消息类应用,是一种提供在线实时通信的平台,如QQ、微信等;2)在线社交类应用,是一种提供在线社交关系的平台,如Facebook...
1、引言近年来,随着数字化教育浪潮的不断推进,我国在教育资源建设方面已经取得了巨大的成就,各类教育资源的数量巨大且呈现几何级数增长。随着搜索引擎技术的发展,通用搜索引擎的功能变得日益强大,取得了很大的成功,但其仍有局限性,如搜索的深度不够,...
上世纪中页,传播学家麦克卢汉曾在《理解媒介:论人的延伸》中提出:媒介是人感觉能力的延伸或扩展。这一经典概念的重要意义,在于将人的单一感官和媒体的传播特征进行了对应。例如,从视角延伸到印刷媒介,从听觉延伸到广播以及视、听觉共同延伸到电视。而...
搜索引擎经历近30年的发展,目前在使用的有几种类型,如全文搜索引擎、分类目录搜索引擎、多元搜索引擎、集成搜索引擎等。但这些都是网络上的公用商业搜索引擎,它们往往不能满足企业的需要。...
第4章模型构建及假设提出。本章在前两章文献综述和理论分析的基础上,结合访谈的结果提出了搜索引擎优化方法和效果的维度,并构建了两者的概念模型,提出了各研究变量之间的假设关系。4.1访谈。访谈法是指研究者通过面对面、QQ等访谈方式,与受访者...