1.增加compass2.20的jar包
2.用annotation在pojo类里面增加实现搜索的功能
Person类
import org.compass.annotations.Index;
import org.compass.annotations.Searchable;
import org.compass.annotations.SearchableId;
import org.compass.annotations.SearchableProperty;
import org.compass.annotations.Store;
@Searchable
public class Person {
@SearchableId
private int id;
//@SearchableProperty(name="name") --- 这个默认的是分词,存储
@SearchableProperty(name="name")
private String name;
//不分词,用下面的annotation定义
@SearchableProperty(index = Index.UN_TOKENIZED, store = Store.YES)
private String sex;
@SearchableProperty(name="adress")
private String address;
@SearchableProperty(index = Index.UN_TOKENIZED, store = Store.YES)
private String duty;
@SearchableProperty(index = Index.UN_TOKENIZED, store = Store.YES)
private String phone;
@SearchableProperty(name="description")
private String description;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getDuty() {
return duty;
}
public void setDuty(String duty) {
this.duty = duty;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
3.增加一个applicationContext-compass.xml文件,配置compass
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
default-lazy-init="true">
<bean id="annotationConfiguration"
class="org.compass.annotations.config.CompassAnnotationsConfiguration">
</bean>
<bean id="compass" class="org.compass.spring.LocalCompassBean">
<!--
<property name="resourceDirectoryLocations">
<list>
<value>classpath:com/oa</value>
</list>
</property>
-->
<property name="connection">
<value>/lucene/indexes</value>
</property>
<property name="classMappings">
<list>
<value>com.oa.model.Person</value>
</list>
</property>
<property name="compassConfiguration" ref="annotationConfiguration" />
<property name="transactionManager" ref="transactionManager" />
<property name="compassSettings">
<props>
<!-- 指定索引的路径 -->
<prop key="compass.engine.connection">e:/compass</prop>
<!-- 指定分词器 -->
<prop key="compass.engine.analyzer.default.type">net.paoding.analysis.analyzer.PaodingAnalyzer</prop>
<prop key="compass.transaction.factory">
org.compass.spring.transaction.SpringSyncTransactionFactory
</prop>
</props>
</property>
</bean>
<bean id="hibernateGpsDevice"
class="org.compass.gps.device.hibernate.HibernateGpsDevice">
<property name="name">
<value>hibernateDevice</value>
</property>
<property name="sessionFactory" ref="sessionFactory" />
<property name="mirrorDataChanges">
<value>true</value>
</property>
</bean>
<!-- 同步更新索引 通过compassGps-->
<bean id="compassGps" class="org.compass.gps.impl.SingleCompassGps"
init-method="start" destroy-method="stop">
<property name="compass" ref="compass" />
<property name="gpsDevices">
<list>
<bean
class="org.compass.spring.device.SpringSyncTransactionGpsDeviceWrapper">
<property name="gpsDevice" ref="hibernateGpsDevice" />
</bean>
</list>
</property>
</bean>
<bean id="compassTemplate"
class="org.compass.core.CompassTemplate">
<property name="compass" ref="compass" />
</bean>
<!-- 定时重建索引(利用quartz)或随Spring ApplicationContext启动而重建索引 -->
<bean id="compassIndexBuilder"
class="com.struts2.service.impl.CompassIndexBuilder"
lazy-init="false">
<property name="compassGps" ref="compassGps" />
<property name="buildIndex" value="true" />
<property name="lazyTime" value="10" />
</bean>
</beans>
分享到:
相关推荐
总的来说,构建基于Compass和Spring的搜索引擎涉及理解Compass的核心概念,如OSEM、配置方式和API,以及如何利用Spring的集成优势简化开发流程。通过这种方式,开发者可以快速、高效地实现一个功能完备的全文搜索...
接下来,为了实现搜索功能,我们需要创建一个Service层的接口和实现类,这个类会调用Compass的API来执行搜索查询。搜索方法可能接受关键词参数,然后使用Compass的QueryBuilder或直接写入Lucene的Query语法来构建...
为了实现搜索功能,你需要创建一个搜索Action,该Action可以调用由Spring管理的Service,Service再通过CompassTemplate执行查询。你可以使用Compass提供的Gps接口或者自定义查询语句来实现对索引的检索。检索结果...
总结来说,这个示例项目是一个完整的Java应用框架,展示了如何优雅地集成Compass 2.0、Spring和Hibernate,实现一个功能强大的、支持全文搜索的持久层解决方案。它不仅有助于理解这三个框架的基本用法,还提供了实践...
3. **实现服务层**:创建服务层接口及其实现类,利用Spring的注入机制注入Compass的bean,实现对索引的操作。 #### 五、实际应用案例 假设我们有一个项目管理系统,需要实现项目的快速搜索功能。我们可以采用上述...
在本项目中,"JAVA 全文搜索 struts2+spring+hibernate+compass整合记录" 是一个关于如何在Java环境下集成四个关键组件来实现全文搜索引擎的实践教程。Struts2是一个流行的MVC框架,Spring是核心的依赖注入框架,...
描述中给出的链接指向了 CSDN 博客的一个文章,该文章可能详细解释了如何在 Spring 3 中集成 Compass 和 Hibernate,以实现数据库数据的全文搜索功能。CSDN 是中国知名的开发者社区,其中的文章通常涵盖了各种编程...
接着,他们可能会展示如何通过Spring的依赖注入来调用搜索服务,并使用Lucene和Compass提供的API来执行查询。最后,这个例子可能会涵盖如何优化搜索性能,以及如何处理索引和查询时可能出现的问题。 由于没有具体的...
描述中的链接指向了 CSDN 博客上的一篇文章,虽然具体内容无法在当前环境中查看,但我们可以推测这篇文章可能讲述了如何在 Spring 应用中集成 Compass 和 Hibernate,实现全文检索功能。通常,这样的集成会包括以下...
开发者可能需要创建Action类来处理业务逻辑,配置Spring的bean来管理依赖,设置Hibernate的映射文件以定义数据库关系,同时在Compass中配置索引以实现搜索功能。 集成这些框架通常涉及以下步骤: - 配置Struts的...
这样,我们就完成了Compass、Hibernate和Spring的整合,实现了数据的高效检索。 在"compass_hibernate_spring.zip"中,你应该能够找到一个完整的项目结构,包括配置文件、实体类、服务层代码等。通过分析和运行这个...
通过以上步骤,你可以在SSH框架下成功集成Compass实现站内搜索分页。这一过程涉及到Java Web开发的多个层面,包括MVC架构、数据库操作、全文检索以及用户体验设计。熟练掌握这些技能将有助于构建高效且功能丰富的Web...
4. **事务管理**:由于Compass可以与Spring集成,所以它可以利用Spring的事务管理,确保索引更新与数据操作在同一事务中完成,保证数据一致性。 **集成步骤** 1. **引入依赖**:在项目中添加Compass和SSH框架的...
在本项目中,开发者利用SSH2(即Struts2、Hibernate和Spring的组合)作为基础框架,并引入Compass来实现全文检索功能,以此提升应用程序的数据查询效率和用户体验。 Struts2 是一个基于MVC(模型-视图-控制器)设计...
标题中的"S2SH+compass"指的是一个基于Struts2(S),Spring(S)和Hibernate(H)这三种开源框架的Java Web应用,再加上Compass搜索引擎来实现站内全文检索的功能。这种组合常用于构建复杂的企业级应用,因为它提供...
标题 "compass-2.2.0+hibernate-3.2+struts-2.1.8.1+spring-framework-2.5.4" 指的是一个集成开发环境,它结合了四个关键的技术组件:Compass、Hibernate、Struts 2 和 Spring Framework,这些都是Java Web开发中的...
5. 实现搜索功能:在Struts2的动作类中,调用Compass提供的API进行搜索,并将结果返回到视图层展示。 6. 错误处理和优化:测试和调试搜索功能,处理可能出现的问题,如索引丢失、搜索性能低下等。 通过上述整合,...