`
gcgmh
  • 浏览: 354274 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

compass和spring 集成实现实时搜索

阅读更多
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构建自己的搜索引擎.pdf

    总的来说,构建基于Compass和Spring的搜索引擎涉及理解Compass的核心概念,如OSEM、配置方式和API,以及如何利用Spring的集成优势简化开发流程。通过这种方式,开发者可以快速、高效地实现一个功能完备的全文搜索...

    Spring ,JPA,Compass使用注解开发的博客站内搜索

    接下来,为了实现搜索功能,我们需要创建一个Service层的接口和实现类,这个类会调用Compass的API来执行搜索查询。搜索方法可能接受关键词参数,然后使用Compass的QueryBuilder或直接写入Lucene的Query语法来构建...

    struts2+spring2.5+hibernate3.26+compass2.1搜索引擎简单实现(无jar包)

    为了实现搜索功能,你需要创建一个搜索Action,该Action可以调用由Spring管理的Service,Service再通过CompassTemplate执行查询。你可以使用Compass提供的Gps接口或者自定义查询语句来实现对索引的检索。检索结果...

    整合compass2.0 spring hibernate示例源程序

    总结来说,这个示例项目是一个完整的Java应用框架,展示了如何优雅地集成Compass 2.0、Spring和Hibernate,实现一个功能强大的、支持全文搜索的持久层解决方案。它不仅有助于理解这三个框架的基本用法,还提供了实践...

    基于Compass2.2与Spring 结合建立索引的实例

    3. **实现服务层**:创建服务层接口及其实现类,利用Spring的注入机制注入Compass的bean,实现对索引的操作。 #### 五、实际应用案例 假设我们有一个项目管理系统,需要实现项目的快速搜索功能。我们可以采用上述...

    JAVA 全文搜索 struts2+spring+hibernte+compass整合记录

    在本项目中,"JAVA 全文搜索 struts2+spring+hibernate+compass整合记录" 是一个关于如何在Java环境下集成四个关键组件来实现全文搜索引擎的实践教程。Struts2是一个流行的MVC框架,Spring是核心的依赖注入框架,...

    compass_hibernate_spring3.zip

    描述中给出的链接指向了 CSDN 博客的一个文章,该文章可能详细解释了如何在 Spring 3 中集成 Compass 和 Hibernate,以实现数据库数据的全文搜索功能。CSDN 是中国知名的开发者社区,其中的文章通常涵盖了各种编程...

    Lucene+compass+spring+jdbc+庖丁的一个例子

    接着,他们可能会展示如何通过Spring的依赖注入来调用搜索服务,并使用Lucene和Compass提供的API来执行查询。最后,这个例子可能会涵盖如何优化搜索性能,以及如何处理索引和查询时可能出现的问题。 由于没有具体的...

    compass_hibernate_spring2.zip

    描述中的链接指向了 CSDN 博客上的一篇文章,虽然具体内容无法在当前环境中查看,但我们可以推测这篇文章可能讲述了如何在 Spring 应用中集成 Compass 和 Hibernate,实现全文检索功能。通常,这样的集成会包括以下...

    STRUTS SPRING COMPASS 实例

    开发者可能需要创建Action类来处理业务逻辑,配置Spring的bean来管理依赖,设置Hibernate的映射文件以定义数据库关系,同时在Compass中配置索引以实现搜索功能。 集成这些框架通常涉及以下步骤: - 配置Struts的...

    compass_hibernate_spring.zip

    这样,我们就完成了Compass、Hibernate和Spring的整合,实现了数据的高效检索。 在"compass_hibernate_spring.zip"中,你应该能够找到一个完整的项目结构,包括配置文件、实体类、服务层代码等。通过分析和运行这个...

    ssh+compass实现站内搜索分页.rar

    通过以上步骤,你可以在SSH框架下成功集成Compass实现站内搜索分页。这一过程涉及到Java Web开发的多个层面,包括MVC架构、数据库操作、全文检索以及用户体验设计。熟练掌握这些技能将有助于构建高效且功能丰富的Web...

    compass索引插件demo

    4. **事务管理**:由于Compass可以与Spring集成,所以它可以利用Spring的事务管理,确保索引更新与数据操作在同一事务中完成,保证数据一致性。 **集成步骤** 1. **引入依赖**:在项目中添加Compass和SSH框架的...

    struts2 hibernate spring compass全文检索

    在本项目中,开发者利用SSH2(即Struts2、Hibernate和Spring的组合)作为基础框架,并引入Compass来实现全文检索功能,以此提升应用程序的数据查询效率和用户体验。 Struts2 是一个基于MVC(模型-视图-控制器)设计...

    S2SH+compass (实现站内全文检索)

    标题中的"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-2.2.0+hibernate-3.2+struts-2.1.8.1+spring-framework-2.5.4" 指的是一个集成开发环境,它结合了四个关键的技术组件:Compass、Hibernate、Struts 2 和 Spring Framework,这些都是Java Web开发中的...

    SSH2整合compass做搜索引挚

    5. 实现搜索功能:在Struts2的动作类中,调用Compass提供的API进行搜索,并将结果返回到视图层展示。 6. 错误处理和优化:测试和调试搜索功能,处理可能出现的问题,如索引丢失、搜索性能低下等。 通过上述整合,...

Global site tag (gtag.js) - Google Analytics