基于Java的搜索引擎的研究与设计

2021-11-20 00:21陈娟
电子技术与软件工程 2021年21期
关键词:分词搜索引擎浏览器

陈娟

(咸阳师范学院 陕西省咸阳市 712000)

1 序言

随着互联网的发展,信息种类越来越多,信息量越来越大,用户想找到所需的资料简直如同大海捞针,为满足大众信息检索需求的专业搜索网站便应运而生了。搜索引擎(search engine)是一个用户通过查询关键字从互联网中搜索出信息的特定系统。搜索引擎系统会对互联网中的所有信息资源进行搜索、整理和分类,同时将这些信息存储在网络数据库中,用户只需在客户端输入查询关键字,即可与数据库中的信息进行比对,并将最终结果显示给用户。因此搜索引擎包含了信息搜索、信息分类、用户查询三部分。目前,由于智能手机的广泛使用,搜索引擎已经从计算机转移到了更便于携带的手机上,让用户随时随地可上网搜索资源。

根据工作方式的不同,搜索引擎可以分为目录索引类搜索引擎(Search Index/Directory)、全文搜索引擎(Full Text Search Engine)和元搜索引擎(Meta Search Engine)。目录索引类搜索引擎严格意义上不是一个搜索引擎,它只是一个按目录分类的网站链接列表,用户不是依靠关键词(Keywords)进行查询,而是根据分类目录找到相关信息,常见的目录索引搜索引擎如雅虎、新浪和网易等;全文搜索引擎是从互联网中提取各个网站的文字信息,建立起网络数据库,根据用户输入的查询关键字检索出相匹配的记录并返回结果。它的数据库是通过一个叫“网络爬虫”或“网络蜘蛛”的软件自建网页数据库,搜索结果直接从自身的数据库中调用,比如著名的Google 和百度搜索;元搜索引擎是同时在多个搜索引擎上搜索,将信息返回给用户。本文主要通过研究全文搜索引擎相关技术,设计一个基于Java 的搜索引擎系统,系统采用B/S 架构,前台页面使用JSP 开发,后台采用Mysql 数据库来实现数据存储和查询。

2 关键技术

2.1 Lucene简介

Lucene 是由Apache 软件基金会支持和提供的一个成员,它是用于全文检索的开源程序库。Lucene 并不是一个功能完善的搜索引擎,它其实是为开发人员提供的一个简单易用的工具包,目的是在目标系统中实现全文检索的功能。同时,Lucene 在Java 开发环境里是一个成熟的免费的工具包,因此,开发人员可以简单、方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎,因此它是目前最受欢迎的免费Java 信息检索程序库。在应用场景中,对于数据量非常大的数据可采用全文检索方式进行搜索,比如我们熟知的百度、Google 等搜索引擎,还有在各大论坛、购物网站等进行站内搜索时都会用到。

安装Lucene 前需要进行Java 使用环境的基本配置,以便确保在某个平台下能够运行Java 源代码。在Java 环境变量的Classpath中添加Lucene 的位置,比如:“D:java Lucene-1.4-finalLuncene-1.4-final.jar;”。也可以直接将Lucene-1.4-final.jar 文件放到WEBINFclasses 目录下。

2.2 中文分词

中文分词是指将一个连续序列的中文语句切分成单独的多个词。对于一段用户输入的中文,如果能够正确的将其切分为词,计算机就可以准确识别其语句含义,这就是分词算法。现有的分词算法可分为三大类:基于统计的分词方法、基于理解的分词方法以及基于字符串的分词方法。对于搜索引擎来说,中文分词是否准确,常常直接影响到对搜索结果的相关度排序,也会导致最终返回的结果不同。中文分词技术之所以会广泛应用在搜索引擎中是因其语法上的特殊性,以英文为代表的拉丁语系可以使用空格作为分隔符,将句子自然分割为相关单词,而中文语句中词语之间缺少分隔符,它的切分非常复杂,由于在现代汉语中通常是以词语作为基本表达单元居多,不再使用单独字表达相关含义。例如:“计算机技术”,基本语义单元为“计算机”和“技术”,如果按单字切分为“计”、“算”、“机”、“技”、“术”,则这些单字无法表达中文含义,因此不符合需求。

2.3 JSP技术

JSP 全称Java Server Pages,是一种动态网页开发技术,主要用于实现Java web 应用程序的用户界面部分。在企业开发中,前端工程师(美工)负责前端的页面(html 文件)相关设计和美化工作,后台的Java 代码由Java 程序开发人员完成,要使前端和后台相结合完成网页正常运行,后台开发人员需要在Servlet 中使用response获取输出流,与前端页面链接,如此会使得系统中的Java 代码十分繁琐,而且不利于前端工程师维护页面。因此sun 公司开发出JSP 来解决这一问题,开发人员可以直接在JSP 文件中书写HTML代码、XHTML 代码、XML 元素以及嵌入JSP 操作和命令,最后由Java 对应的机制将其翻译成相应的Java 代码,这样前端工程师就可以直接在JSP 文件中对页面进行设计和修改,后台开发人员也可以在JSP 页面中添加后台程序。

2.4 超文本传输协议

超文本传输协议(Hypertext Transfer Protocol, HTTP)是Web的基础协议。超文本传输协议是用于从万维网服务器上传输超文本到本地浏览器,是一种简单的请求—响应协议,它保证计算机能够正确快速地传输超文本文档,还能指定客户端可以向服务器端发送哪些消息、将收到什么响应以及所发送文档中的哪部分内容首先显示。由于目前互联网中使用最为广泛的协议就是超文本传输协议HTTP,因此所有的WWW 文件都遵守这个标准。

2.5 MySQL数据库

数据库是建立在计算机存储设备上的一种“仓库”,用于组织、存储和管理各类数据,数据可按照一定的数据模型来存储,用户可对“仓库”中的数据进行新增、修改、删除和查询等操作。数据库中的数据可为多用户共享使用,即多个用户可以同时存取数据库中的同一个数据,而不受具体程序的限制,这不仅满足了用户对信息内容的要求,同时也满足了各用户之间信息通信的需求。关系型数据库是建立在关系模型基础上的数据库,它使用二维表格来存储大量数据,本系统所研究的搜索引擎后台是由MySQL 实现,MySQL是比较受欢迎的关系型数据库管理系统,可移植于各种流行的操作系统平台,由于Mysql 是开源的,它支持大型的数据库,使用标准的SQL数据语言形式,因此,MySQL数据库应用在大多数的系统中,用于后台数据的存储以及操作。

3 需求分析

全文搜索引擎可分为四个部分,分别是搜索器、索引器、检索器和用户界面。它的工作过程是:首先搜索器在互联网中进行搜索,发现和搜集网页信息;接下来索引器对搜索器搜索到的信息进行一系列的解析、整理后,提取出关键信息并建立索引项,存储于索引数据库中;最后检索器会根据用户在用户界面输入的查询关键字,在索引数据库中快速检索文档,找到与查询请求相匹配的文档信息,然后将查询结果按相关度排序显示给用户;用户接口主要用于和用户交互,用户进入搜索界面,在文本框中输入想要查询的关键字,点击“搜索”,系统根据用户的查询请求,查询索引表与数据库,产生查询结果并按照一定的格式输出显示给用户。本文所研究的全文搜索引擎系统应具备以下功能:

3.1 抓取网页

在互联网中,URL 是每个网页的入口地址,搜索引擎所采用的蜘蛛程序通过URL 来抓取网站页面,然后从该页面提取新的URL存储到原始URL 列表中,最后将该原始页面存储到搜索引擎索引库。

3.2 处理网页

对于抓取到的网页信息,搜索引擎还需要做一些前期预处理工作,首先是从网页信息中提取出关键词,这是最重要的一步,需要去除重复的网页信息,使用中文分词技术提取关键信息,判断网页类型,分析超链接,计算网页的重要度和丰富度等,这些都为后期用户检索关键字以及按照相关度排序显示查询结果提供重要依据。

3.3 提供检索服务

在用户界面,当用户输入关键词,点击“搜索”按钮后,搜索引擎会从后台索引数据库中查找信息,最后将结果输出显示给用户。为了使用户能快速找到有用的网页信息,除了网页的URL 和标题外,还会提供一段来自该网页信息的摘要。

本系统在性能上应注意以下几点:

(1)为了提高多用户检索时的检索效率,系统应采用优化后的检索策略和多线程并发检索机制;

(2)系统应具有高安全性,应提供数据库级、记录级与字段级安全保护措施。

4 系统设计

根据全文搜索引擎的需求分析,本系统应包含以下模块:预处理功能,数据库连接池部分,Web 框架与用户界面的设计。这些不同功能的模块在模拟搜索引擎中起着不同的作用,通过它们之间的相互配合、相互补充以实现搜索的目的。

为方便用户使用,将用户操作界面分为浏览器界面、J2ME 既模拟手机窗口界面,提供给用户方便、美观、实用的接口界面。爬取功能负责采集数据,预处理部分负责将数据库字典一次性加载到内存中。数据库连接池部分负责创建连接池信息,以满足多用户使用,多程序同时进行。

4.1 系统界面设计

系统的客户端界面采用Jsp 技术,保证用户界面美观大方,方便操作,另外在页面的布局和显示效果方面也应合理设计,使其在性能上更加优越,没有操作的盲区或者明显的不合理的地方。

4.1.1 界面的显示问题

页面高度、宽度合适,配色美观,内容位置布局合理,文字大小、颜色适当。随着浏览器,分辨率的变化,浏览器显示区域的高度和分辨率显示的高度的不同,一个页面不够显示的内容可用下拉滚动条设置。列表页面可以采用表格形式展示,可以根据喜好来选择每页显示多少条信息,列表项较多时可分页显示。

4.1.2 页面布局问题

页面可采用div 块来设计,整个页面可分为top、middle、left、right、bottom 以及footer 等部分,每部分放置不同的内容,这种方式结构清晰,代码简单,便于对整个页面布局,后期维护方便。

4.2 系统用户模块设计

用户界面主要用于和用户交互,包括响应用户的查询检索和记录用户的行为。用户界面需要获取用户的查询请求,提交给系统,查询索引表与数据库,产生结果并按照一定的格式输出显示给用户,以及记录日志(包括用户查询短语和查询时间等信息)等。

在Eclipse 服务器端运行之后, 打开浏览器输入http://127.0.0.1:8080/telServer,进入搜索初始界面,在文本框中输入想要查询的关键字。点击“搜索”。根据用户输入的查询关键字进行搜索得出结果。搜索前应对用户输入的短语进行分词处理,以此结果作为搜索关键字到索引表中进行查询。按照系统查询返回的结果,根据动态网页生成技术,按照一定的模版形成结果页面输出给用户。

4.3 系统服务器模块设计

系统的服务器部分主要包括两个部分:创建索引和搜索模块。

创建索引模块:该部分是整个系统的核心,包括了解析文档和为文档建立索引。索引的格式独立于运行平台,创建的独立索引块会加速创建索引的速度,为所有文档建立索引也是最终能否搜索出目标文档的关键,从而为下一步搜索做好准备。

搜索模块:该模块的实现搜索功能,负责为界面模块提供文档地址,从而通过界面向用户展示搜索结果。

4.4 系统服务器框架设计

本系统采用的是B/S(Browser/Server)架构,也就是浏览器和服务器架构模式,这种模式是由早期的C/S(客户机/服务器)模式改进演变后的结构。在B/S 架构下,用户只需安装Web 浏览器,打开搜索主页,即可完成搜索功能。这种模式下,前端需要处理的事务非常少,大部分是数据渲染工作,后台也就是服务器端需要处理大量的事务逻辑。在后期维护和升级时,管理员也只需要在服务器端操作即可,所有的客户端只是浏览器,不需要任何操作,这样就大大简化了客户端计算机的工作负载,减轻了系统维护与升级的成本和工作量。用户在使用系统时,仅仅需要一个浏览器就可运行全部的模块,真正达到了“零客户端”的功能,很容易在运行时自动升级。

5 总结

随着互联网迅速发展至今,搜索引擎经历了30年的发展壮大,带给用户非常便利的体验。巨大的互联网每时每刻都在产生着大量的信息,正因为搜索引擎的出现,才让我们在浩瀚的信息海洋中找到了我们的目标。科技在不断进步,未来的搜索引擎朝着社会化、实时化、可移动性、个性化方向不断发展,同时跨语言的搜索,基于图片、视频、音频的搜索也是我们不断研究的方向。

猜你喜欢
分词搜索引擎浏览器
分词在英语教学中的妙用
结巴分词在词云中的应用
结巴分词在词云中的应用
反浏览器指纹追踪
环球浏览器
网络搜索引擎亟待规范
Nutch搜索引擎在网络舆情管控中的应用
基于Nutch的医疗搜索引擎的研究与开发
广告主与搜索引擎的双向博弈分析
论英语不定式和-ing分词的语义传承