互联网搜索引擎设计与实现(上)
- 格式:docx
- 大小:2.76 MB
- 文档页数:27
互联网搜索引擎设计与实现(上)
下载引擎 + 文档预处理 互联网搜索引擎课程设计项目Ⅰ
第 2 页 目录
1.项目要求.................................................................................................................................................3
2. 系统环境 ..................................................................................................................................................3
3. 项目总体设计 ........................................................................................................................................3
4. 详细设计 ..................................................................................................................................................4
4.1 下载引擎 ......................................................................................................................................4
4.2 去标签和符号 .............................................................................................................................6
4.3 去停用词或找词干 ....................................................................................................................7
5. 运行结果 ..................................................................................................................................................9
5.1 下载文档模块 .............................................................................................................................9
5.2 文档预处理模块 ..................................................................................................................... 10
5.3 删除停用词模块 ..................................................................................................................... 12
5.4 自动化执行整个模块 ............................................................................................................ 13
6. 日志 ........................................................................................................................................................ 14
7. 收获与感想 .................................................................................................................................. 14
附录Ⅰ:下载引擎 ................................................................................................................................... 15
附录Ⅰ:中文文档预处理 ..................................................................................................................... 17
附录Ⅰ:英文文档预处理 ..................................................................................................................... 20
附录Ⅰ:停用词表转字典 ..................................................................................................................... 23
附录Ⅰ:删除停用词 .............................................................................................................................. 24
附录Ⅰ:自动化shell脚本 ................................................................................................................... 27
互联网搜索引擎课程设计项目Ⅰ
第 3 页 1.项目要求
(一) 建立并实现文本搜索功能
利用/调用开源搜索引擎Lucene(/)或者Lemur(/)实现文本搜索引擎。查阅相关资料,安装软件。
对经过预处理后的500个英文和中文文档/网页建立搜索并实现搜索功能。
通过上述软件对文档建立索引(Indexing),然后通过前台界面或者已提供的界面,输入关键字,展示搜索结果。
前台可通过网页形式、应用程序形式、或者利用已有的界面工具显示。
必须实现英文搜索功能。中文搜索功能作为可选项。
(二) 比较文档之间的相似度
通过余弦距离(Cosine Distance)计算任意两个文档之间的相似度,列出文档原文,并给出相似度值。
(三) 对下载的文档,利用K-Means聚类算法进行聚类。
将下载的500个中文/英文文档聚为20个类,并显示聚类之后所形成的三个最大的类,及每个类中代表性的文档(即,离类中心最近的五个文档)。
距离计算公式,可采用余弦距离,也可用欧式距离。
2. 系统环境
操作系统:Windows 10专业版
编程语言:Java1.8,HTML5, CSS3, Javascript
编程软件:Eclipse Photon Release (4.8.0)、HBuilder 8.8.0.201706142254
开源搜索引擎:Lucene5.5.5
JAR包:
IK分词器:ik2012lucene4.jar
Lucene中文分词器:lucene-analyzers-smartcn-5.5.5.jar
Lucene 标准分词器:lucene-analyzers-common-5.5.5.jar
Lucene核心包:lucene-core-5.5.5.jar
Lucene搜索结果高亮标注:lucene-highlighter-5.5.5.jar、lucene-memory-5.5.5.jar
Lucene短语查询:lucene-queryparser-5.5.5.jar
索引查看器:luke-5.5.0-luke-release
3. 项目总体设计
该项目是对项目一的补充,由于项目一爬取的内容为网页,为了能让系统检索的结果更好的在前端展示,本项目采用B/S架构,前端为WEB端,能够直接打开检索出来的源HTML文档。
在搜索引擎上,为了更好的保证该IR系统的稳定性,编程语言采用Java1.8。Java在开互联网搜索引擎课程设计项目Ⅰ
第 4 页 源搜索引擎Lucene上技术已经非常成熟,较Python而言具有先天优势。虽然Apache公司也提供的Lucene的python版本,但各个版本之间的兼容性比较差,且在检索效率和矩阵运算的效率上显然不如Java。
项目前端为浏览器,用户通过浏览器与后端交互。关键字(词)查询时,用户在前端输入关键字,后端返回结果集,并显示在前端。文本相似度查询时,用户上传两个网页预处理之后的txt文档,后端接收文档内容,返回两篇文档的相似度。做聚类处理时,用户通过前端选择需要聚类的数据集合(英文/中文),返回聚类的结果并呈现给用户。
为了更好的满足以上内容,本项目采用MVC模式来设计本项目。
图1. 项目结构
最后,编写linux的shell脚本调用各个模块,将各个模块集成一个完整的自动化系统。
4. 详细设计
4.1 下载引擎
文档的下载通过网络爬虫实现,该过程调用urllib库。
urllib通过urllib.request.Request()函数模拟浏览器的请求体向服务器发出请求,通过urllib.request.urlopen(url)函数获取url链接的数据。
其次,现在大部分的url链接都采用了https安全协议,如果直接使用urllib.request.Request(url)打开https链接,是没法跳过安全认证直接获取数据的,因此,需要设置打开链接时跳过https认证,如下:
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101
Firefox/23.0'}
req = urllib.request.Request(url, headers=headers)
context = ssl._create_unverified_context()
respond = urllib.request.urlopen(req, context=context, timeout=0.5)
批量爬取html文件时,首先需要从一个url爬取数据,然后从爬取的数据中用正则表达式匹配url,并将返回的url列表添加到一个队列中去。
起始的url对爬取的速率和效率都至关重要,为了方便起见,我们直接把一个超链接比