SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎
?
??????? 浏览和搜索的前提是有据可查,没有数据什么都实现不了 , 我使用了Htmlparser通过抓取页面信息的形式将新闻添加进数据库 , 添加数据库数据使用了hibernate3
??????? 使用了Annotation的方式完成数据库的映射。
???????? //NewsType(新闻类型)
????
?通过上面的代码完成了所有的数据添加工作。
?
下面根据ssh的流程分别定制dao , manager , action
?
com.zly.test.dao包中是所有操作dao的抽象类和接口
?
我们直接看这些接口的实现
?
//NewsItemDaoHibernate? 新闻实体类dao
?
?
?
??
???只用到了一个?? NewsManagerImpl?
?
?
???
其中定一个两个map , 因为主页的查看分类新闻的url是采用的这种形式<a href="newsAction.action?category=china" target="_blank">国内</a>?? 名字为map的Map中保存信息如下
?
??
? key是?category后面的值 , value是两部分 , 被###分割开 , 前面的数值是所属新闻类别的id值, 后面的文字是其类别的文字。将其保存在map中,避免不停地查询数据库。
?
? 分页类PageControl的代码如下:
?
???
?? 下面是struts.xml中关于页面展示新闻的配置
?
??
???
?? NewsAction代码如下:
??
??
?
首页页面index.jsp,里面有几个分类超链接和搜索对话框
?
??
?
?
? 其表现形式如下:

新闻分页展示页面result.jsp代码如下:
?? 显示效果如下:
?
?
?
其中点击具体超链接的效果图如下:
?
?

?
任务1 到此完成,新闻显示工作结束。下面是搜索引擎部分。
?
搜索的工具类放置在com.zly.indexManager包下面
?
说明,本程序使用了庖丁解牛中文分词,用户使用时需要中文字典,我的字典放在了c:\dic下面,使用庖丁还需要配置环境变量PAODING_DIC_HOME , 其值为c:\dic , (就是你的字典文件所在的目录)
?
代码如下:
?
创建索引类IndexCreateUtil
?
??
对索引进行搜索的代码如下:
?
??
??
?
分页action代码如下:
???
//searchResult.jsp代码如下:
?
???? 其运行结果如图所示(按标题搜索):
?
?
?

?
?
按内容搜索的运行结果如下:

?
?
?
至此,本小项目的所有功能完成,虽然没有多少难度,也不是什么高科技, 俺还是在google和javaeye上查了不少资料,总算是做完了,贴出来,与大家分享,也给新手学习提供资料。
?
所有的资源我都添加到了附件中,学过ssh的同学应该能够成功部署项目并运行。
?
其中NewsWithSearch.rar是工程文件夹,包含了所有的代码文件和jar包,加压完直接引到MyEclipse里就行,data.rar是所有的sql语句,插入到MySQL之前应先建立数据库mynews? ,???? dic.rar是庖丁解牛用到的字典文件,
解压成一个文件夹,并配置环境变量PAODING_DIC_HOME,其值就是你把它解压成的文件夹(例如c:\dic),最后如果你不想创建索引的话,可以把news.rar解压成一个文件夹,拷贝到c:\index\news下面。
?
?
原文地址:http://shuaigg-babysky.iteye.com/blog/414477