今天学习了全文搜索引擎compass,并且已经整合到S2SH中,将整合的过程记录一下,方便以后的查找:
1.建立搜索页面
<s:form action="search.action" method="post">
<s:textfield name="queryString" label="搜索产品"/>
<s:submit></s:submit>
</s:form>
2.建立相应的Action类:
代码片段:
/**
* 搜索
*
* @return
*/
public String search() {
List results = productManager.searchProducts(queryString);
System.out.println(results.size());
// 将搜索的结果放入ServletActionContext中,相当于struts1.x中的request对象
ServletActionContext.getRequest()
.setAttribute("searchresults", results);
return SUCCESS;
}
3.建立相应的业务接口
/**
* 商品业务接口
*/
package com.v512.example.service;
import java.util.List;
import com.v512.example.model.Product;
public interface ProductManager {
/**
* 增加商品
* @param p
*/
public void insertProduct(Product p);
/**
* 按照ID检索记录
* @param id
* @return
*/
public Product findProdcut(String id);
/**
* 按照商品名称检索记录
* @param queryString
* @return
*/
public List searchProducts(String queryString);
}
4.建立业务类接口的实现类:ProductManagerImpl
/**
* compass搜索 高亮显示
*/
public List searchProducts(String queryString) {
Compass compass = compassTemplate.getCompass();
CompassSession session = compass.openSession();
List list = new ArrayList();
CompassQueryBuilder queryBuilder = session.queryBuilder();
CompassBooleanQueryBuilder boolQuery = queryBuilder.bool();
boolQuery.addMust(queryBuilder.queryString(
"name:" + "*" + queryString + "*").toQuery());
// 匹配属性
// boolQuery.addShould(queryBuilder.queryString("name:" + queryString)
// .toQuery());
CompassHits hits = boolQuery.toQuery().hits();
for (int i = 0; i < hits.length(); i++) {
Product hit = (Product) hits.data(i);
String h = hits.highlighter(i).fragment("name");
if (h != null) {
// 设置值
hit.setName(h);
}
list.add(hit);
}
// 返回结果
return list;
}
在业务类接口中,实例化Compass
5.建立CompassIndexBuilder实现InitializingBean
作用:在启动服务器的时候,实现了spring的InitializingBean接口,让服务器启动,bean初始化的时候去建立索引
6.在web.xml文件中进行配置
7.建立applicationContext.xml和applicationContext-compass.xml
配置文件.
8.启动服务器,查询搜索结果.
最后将工程,上传上来,lib包文件太大,大家可以自己去下载!!
分享到:
相关推荐
ssh框架的电信计费系统 struts2+spring+hiberntessh框架的电信计费系统 struts2+spring+hiberntessh框架的电信计费系统 struts2+spring+hiberntessh框架的电信计费系统 struts2+spring+hibernte
Struts1.0、Spring3.0和Hibernate3.2是经典的Java企业级开发框架组合,它们各自在应用程序的不同层次上发挥着重要作用。Struts1.0是MVC(Model-View-Controller)架构的一个实现,Spring3.0是全面的轻量级应用框架,...
struts+spring+hibernte整合文档,文档中有图文解说,一步一步地教你怎么进行整合。好比如需要那些jar包,spring配置文件怎么配置,struts配置文件怎么配,web.xml里应该怎么配等。
Struts2、Hibernate和Spring是Java开发中三大主流框架,它们的集成应用广泛用于构建复杂的Web应用程序,尤其是权限管理系统。这个“struts2+hibernte+spring权限管理.rar”压缩包显然包含了使用这三个框架搭建的权限...
Struts、Hibernate、Spring 和 jBPM 是四个在IT行业中广泛应用的开源框架和技术,它们共同构建了一个智能工作流系统。这个系统集成了多种技术,旨在提供高效、灵活且可扩展的工作流程管理解决方案。 首先,Struts ...
开发基于StrutsSpringHibernateAjax的网上信息发布平台上机贯穿案例Struts+Spring+Hibernte+Ajax(和课件不同) 附带T-SQL语句写的数据库
【Spring + Struts + Hibernate 课件三合一】是一门结合了Java开发中三大主流开源框架的课程,旨在帮助学员熟练掌握使用Struts、Hibernate和Spring构建多层Web应用程序的技术。这三大框架分别承担着不同的职责,共同...
spring+springMVC+hibernte+shiro框架(非maven) 空框架,没什么东西,hibernate entities自己改一下就能跑起来 ,也可以用hibernate 生成数据库 ,只做了些登陆验证 ,授权写起来太麻烦。 有点垃圾,请见谅哈!
在IT领域,"maven+hibernate+spring+springmvc"是一个常见的技术栈,用于构建企业级的Java Web应用程序。这个技术组合涵盖了项目管理、持久层框架、应用上下文和依赖注入,以及Web MVC框架等多个核心部分。下面将...
在Java Web开发领域,Spring、Struts和Hibernate是三大主流框架,它们各自负责不同的职责,共同构建出高效、灵活的企业级应用。本资料集包含了这三大框架的API文档,以CHM格式提供,便于开发者离线查阅和学习。 1. ...
jQuery+json+struts2+spring3(事务,AOP,IoC即DI)+hibernte3+EhCache+oscache+proxool+MySQL+SiteMesh+Gzip lj例子
在描述中,"自己写的新闻发布模块,struts,hibernte,spring数据库是mysql"进一步证实了这个项目的核心功能是一个新闻发布系统,它利用Struts处理用户请求,通过Hibernate操作MySQL数据库来存储和检索新闻数据。...
### 敏捷Java开发:Spring、Hibernate与Eclipse的关键知识点 #### 一、Spring框架 **Spring框架**是Java平台上最流行的开源应用框架之一,它为简化企业级应用程序的复杂性提供了全面的基础支持。Spring的核心功能...
1. **Spring框架**:Spring是Java企业级应用开发的核心框架,它提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)等核心特性。在这个项目中,Spring用于管理Bean的...
2. 整合WebWork与Spring:通过Spring的Struts2插件(WebWork2已被Struts2合并)将Spring的IoC容器集成到WebWork中,使得Action类可以在Spring容器中被管理。 3. 配置Hibernate:创建Hibernate的配置文件(如`...
在这个特定的案例中,系统是用Java语言开发的,并且采用了经典的MVC(Model-View-Controller)设计模式,通过Struts框架来实现控制层,Hibernate作为持久层框架处理数据库交互,而JSP则用于创建视图层。此外,还使用...
SSH 是 Spring、Struts 和 Hibernate 的组合,是一种常见的 Java Web 开发框架。在 SSH 框架中,Hibernate 作为数据层的 ORM 工具,它的缓存机制对于整个应用的性能优化至关重要。 **五、SSH-补充** 在提供的压缩包...