这一篇将简要介绍一下JobSearch的结构,同时发下源码,来点干货,等过两天闲的时候将围绕这个程序简单介绍搜索引擎的各部分,同时谈谈个人的一些理解。程序写的比较简单,基础好的话很容易就能看懂(因为写的比较早,所以代码比较乱,还望各位勿喷啊)。
SVN地址:http://code.taobao.org/svn//jobsearch/trunk
源文件下载地址:http://files.cnblogs.com/good-temper/jobsearch.rar
1、程序结构
程序框架如下:
(1)、爬虫从招聘网站通过列表页抓取招聘页面,将招聘信息解析出后存入数据库
(2)、通过Luence实现的索引器存数据库读取解析出来的信息,进行分词并建立索引文件
(3)、用户输入关键词提交给查询器
(4)、查询器将关键词分词并检索索引文件,获得匹配的记录集合,根据记录的id查询数据库取出数据反馈给用户。(这里偷了个懒,建立索引是直接将数据表所有字段都存进了索引文件,这样查询时就不需要读取数据库了,但是这是一个非常糟糕的设计,原因以后详细分析时会说明)
程序的源文件结构如下:
com.crawler.analysis
ContentAnalysis.java
ListAnalysis.java
com.crawler.contraller
Contraller.java
job51Contraller.java
com.crawler.database
MysqlOperater.java
SqliteOperater.java
com.crawler.entity
Queue.java
ArrayQueue.java
SearchResult.java
SimpleContent.java
UrlInfo.java
com.crawler.filter
com.crawler.htmlop
GetHtml.java
com.crawler.io
FileOperater.java
com.crawler.luence
InfoIndex.java
com.crawler.tool
ComputeMD5.java
DataOp.java
PropertiesOp.java
//最后,应该是controller,而不是contraller,好吧,没文化真可怕。
2、如何配置程序
2.1 导入项目
可以svn签入或者下载源文件导入,我用的myeclipse9.0,但是开发用的myeclipse8.5,所以8.5以上版本应该都行。
2.2 初始化数据库
脚本文件在sql文件加下,里边已经有一些数据,但是建议把数据清空(因为对应没索引文件没拷,这些数据也查询不出来)。
2.3 抓取数据
运行程序,将程序部署至tomcat,打开:http://localhost:8080/JobSearch/index.jsp
点击右上角的“抓取设置”,按照下图执行点击1、2,暂时不要执行3。
这是可以在控制台看到输出抓取日志信息:
2.4 对抓取信息建立索引
在抓取了一段时间后(可以看看数据库,差不多positioninfo表有个千吧条信息时,反正是测试下,用不着抓太多),点击上边的3开始建立索引。这里需要提到是由于代码对异常处理的有问题,长时间运行后会出现异常信息,一般情况下忽略即可(比如一些链接请求失败很正常),但是有时候你会发现列表页解析速度很快,内容页个很长时间才完成一个,这个一般重启即可,不必担心重复抓取,抓取状态数据库保存的有。
建立索引将是个很长的时间,而且建议在抓取停止后在去建立索引(怎么停止?这个....没写,直到列表信息抓取完就停止了,或者你重启下tomcat也行,反正是个练手项目,也不追求十全十美......),否则很可能你等很长时间也不见结束。
2.5 万事具备,搜索吧
打开主页,填写关键词(最好和抓取分类相关)和条件,点击搜索,会惊喜的发现页面显示了搜索结果。但是同时你也可能会小小的失望:有时候搜索结果准确度并不是那么高。这个主要和分词器以及luence的使用有关,因为我只是简单的使用了下,并未做相关排名,而且分词器分词不一定准确(这个牵扯很多原因,也是搜索引擎需要解决的核心问题之一,以后我会说下我所了解的解决思路)。
最后来几张效果图,然后睡觉去。