java web课程设计题目之一是做搜索引擎,简单的记录下过程。
功能是搜索湖南科技大学计算机学院官网的新闻 http://computer.hnust.edu.cn/a/xueyuanxinwen2/list_52_1.html
主要包括信息的爬取、索引建立、搜索实现、web实现
爬取新闻
在计算机学院官网爬取新闻的链接 标题 发布日期 新闻内容,每一条新闻保存为一个txt文件,以日期命名
爬取的txt列表
txt文件内容
爬虫写的比较笨拙,因为官网新闻有些格式标签不一致,所以爬的时候是一次爬七八页左右,过程中遇到了很多编码问题,建议大家先弄清楚乱码的原因,可多百度搜下解决方法,这里参考下 https://blog.csdn.net/apple9005/article/details/52831318
我是先爬取新闻列表每一页的源代码,再利用BeautifulSoup提取各个新闻的链接,下载每条新闻的源代码,最后从中提取所需要的内容,保存为txt文件
建立索引
这部分内容没彻底弄懂,主要是用到了Lucene索引,因为不能直接对文本文件进行搜索,所以需要利用Lucene建立索引,进行分词,才可根据输入的词进行搜索
建立索引的程序目录
建议先在电脑上运行下Lucene的简单实例,自己建个文本文档进行搜素,操作一遍便能理解个大概,这里参考https://blog.csdn.net/u012463017/article/details/46315367 ,这篇文章过程很详细,而且把文本文档内容写出来了,之前网上找了很多个实例运行都出现一大堆错误,而且对于新手来说根本不知道文本文档的内容应该要写些什么啊
实现搜索
对用户输入的语句进行分词,分词所得的结果保存到一个ArrayList中,然后运用布尔搜索搜索含有这些词的文档。根据词频进行排序之后,取前500个文档进行时间月份的排序后返回结果,以保证搜索结果的时效性
实现搜索的程序目录
web实现
在webroot下建立三个jsp文件,首页搜索界面、搜索成功的界面显示、未搜索到的界面显示
使用servlet来实现请求管理,使用过程中同样遇到了中文乱码问题,导致获取到的输入语句为乱码,发生异常,后查询发现是编码方式和解码方式不一致。解决方法:在get输入值的语句后面添加input = new String(input.getBytes("iso8859-1"),"UTF-8");
程序目录结构(一定要导入servlet包、analysis包、lucene core包)
大家写程序的过程中遇到了问题,一定要调试啊,只有调试才能知道你的值有没有输进去,哪一步出现了错误,最后就是多思考,先思考再动手,计算机这门学科很考验逻辑能力
自己写的搜索引擎基本参考的这篇文章 https://blog.csdn.net/john_bian/article/details/74502323,在这位大神的基础上改动了部分,源代码大神在评论区给了
附上我的爬虫链接(虽然写的很low)链接:https://pan.baidu.com/s/18xYjpJGKdQ9nLbVEAq5SlA 密码:mrx9