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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值