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>