SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎

时间:2022-10-12 03:11:15

  前两天看到了一个中国新闻网,这个网站的搜索form的action是

http://search.chinanews.com/search.do



便知道是struts1的产物,现在都用struts2了,所以给自己的任务是实现Struts2 SSH分页浏览新闻、Lucene分页高亮排序搜索新闻这个两个功能。

 

    IDE使用的MyEclipse6.5,数据库使用MySQL 5.0.37 , 另装了Navicat for MySQL , jdk版本是6.0

    工程做完的效果图如下,com.zly.indexManager中两个类,分别创建索引和搜索索引,

    com.zly.test.entity中是使用的实体类,分别是NewsType(新闻类型),NewsItem(新闻具体条目),PageControl(分页实体bean) , SearchResultBean(保存搜索结果的bean).

 

 

 

 

        浏览和搜索的前提是有据可查,没有数据什么都实现不了 , 我使用了Htmlparser通过抓取页面信息的形式将新闻添加进数据库 , 添加数据库数据使用了hibernate3

        使用了Annotation的方式完成数据库的映射。

         //NewsType(新闻类型)

Java代码

   //NewsItem(新闻具体条目)

 

Java代码

    添加所有新闻类型的类放在了com.zly.test.newsFetch包下 , 具体代码:

 

 

Java代码

 通过上面的代码完成了所有的数据添加工作。

 

下面根据ssh的流程分别定制dao , manager , action

 

com.zly.test.dao包中是所有操作dao的抽象类和接口

 

我们直接看这些接口的实现

 

//NewsItemDaoHibernate  新闻实体类dao

 

 

 

Java代码

 

在applicationContext-action.xml中配置action类别

Java代码

     

  key是?category后面的值 , value是两部分 , 被###分割开 , 前面的数值是所属新闻类别的id值, 后面的文字是其类别的文字。将其保存在map中,避免不停地查询数据库。

 

  分页类PageControl的代码如下:

 

Java代码

 

  被许多页所包含的page.jsp代码如下:

 

 

Java代码

   下面是struts.xml中关于页面展示新闻的配置

 

 

Java代码

          

 

首页页面index.jsp,里面有几个分类超链接和搜索对话框

 

Java代码

 

 

  其表现形式如下:

 

新闻分页展示页面result.jsp代码如下:

Html代码

  显示效果如下:

 

 

 

其中点击具体超链接的效果图如下:

 

 

 

 

任务1 到此完成,新闻显示工作结束。下面是搜索引擎部分。

 

搜索的工具类放置在com.zly.indexManager包下面

 

说明,本程序使用了庖丁解牛中文分词,用户使用时需要中文字典,我的字典放在了c:/dic下面,使用庖丁还需要配置环境变量PAODING_DIC_HOME , 其值为c:/dic , (就是你的字典文件所在的目录)

 

代码如下:

 

创建索引类IndexCreateUtil

 

Java代码

对索引进行搜索的代码如下:

 

 

Java代码

 

分页action代码如下:

Java代码

 

搜索的action在struts.xml中设置如下:

 

Xml代码

            <action name="searchAction" class="searchAction" method="search">
                <result>/searchResult.jsp</result>
            </action>

//searchResult.jsp代码如下:

 

Html代码

    其运行结果如图所示(按标题搜索):

 

 

 

 

 

 

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

 

 

 

 

至此,本小项目的所有功能完成,虽然没有多少难度,也不是什么高科技, 俺还是在google和javaeye上查了不少资料,总算是做完了,贴出来,与大家分享,也给新手学习提供资料。

 

所有的资源我都添加到了附件中,学过ssh的同学应该能够成功部署项目并运行。

 

其中NewsWithSearch.rar是工程文件夹,包含了所有的代码文件和jar包,加压完直接引到MyEclipse里就行,data.rar是所有的sql语句,插入到MySQL之前应先建立数据库mynews  ,     dic.rar是庖丁解牛用到的字典文件,

解压成一个文件夹,并配置环境变量PAODING_DIC_HOME,其值就是你把它解压成的文件夹(例如c:/dic),最后如果你不想创建索引的话,可以把news.rar解压成一个文件夹,拷贝到c:/index/news下面。

 

以上是那位牛兄的代码,实在太多了,机械的粘贴复制也是挺累的。不过坚持就是胜利吗,终于复制完了。但可能会有篡行或复制错的地方,请多谅解。

 

源代码下载:

SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part3
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part2
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part1
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--news.part2
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--news.part1
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--dic
原出处请看:http://www.javaeye.com/post/1068335