spring集成compass中出现的问题和总结

来源:互联网 发布:网络大电影杀小姐 编辑:程序博客网 时间:2024/05/17 17:43

一、用spring的事务管理来管理compass,使compass使用更加方便

在bean.xml中compass配置如下:(使用的是paoding分词器)

<bean id="compass" class="org.compass.spring.LocalCompassBean">
  <property name="classMappings"><!-- 指定搜索实体  -->
   <list>
    <value>com.zjnjust.bean.product.ProductInfo</value>
    <value>com.zjnjust.bean.product.ProductStyle</value>
    <value>com.zjnjust.bean.product.ProductType</value>
   </list>
  </property>
  <property name="compassSettings">
  <props>

   <!--以下语句的作用:将compass默认的分词器设置成 paoding分词器。如果第一次配置是没问题的,但当你重新部署工程,运行就会出错;此时只需要将该语句删除。??why   -->
    <prop key="compass.engine.analyzer.default.type">net.paoding.analysis.analyzer.PaodingAnalyzer</prop>

  <!--设置索引文件存放的路径-->

    <prop key="compass.engine.connection">file://d:/index</prop>
    <!-- 在内存中建立索引
    <prop key="compass.engine.connection">ram://index</prop>
    -->
    <prop key="compass.engine.highlighter.default.formatter.simple.pre"><![CDATA[<font color='red'>]]></prop>
    <prop key="compass.engine.highlighter.default.formatter.simple.post"><![CDATA[</font>]]></prop>
    <prop key="compass.transaction.factory">org.compass.spring.transaction.SpringSyncTransactionFactory</prop>
   </props>
  </property>
  <property name="transactionManager" ref="transactionManager" />
 </bean>

 <!--GPS 自动完成 索引的添加/更新/删除操作-->
 <bean id="compassGps" class="org.compass.gps.impl.SingleCompassGps" init-method="start" destroy-method="stop">
  <property name="compass" ref="compass" />
  <property name="gpsDevices">
   <list>
    <!-- 设置JPA驱动 -->
    <bean class="org.compass.gps.device.jpa.JpaGpsDevice">
      <property name="name" value="jpaDevice" />
      <property name="entityManagerFactory" ref="entityManagerFactory" />
      <property name="injectEntityLifecycleListener" value="true"/>
    </bean>
   </list>
  </property>
 </bean> 

二、接下来再简单介绍下compass配置的过程

1、搭建compass环境。将compass需要到的jar文件加载到工程中

所需要的jar文件有8个:commons-logging.jar; compass- 2.2.0.jar ; lucene-analyzers.jar;  lucene-core.jar; lucen-highlighter.jar;  lucene-queries.jar;  lucene-snowball.jar ; lucene-spellchecker,jar。

2、设计实体,并且完成实体的映射元数据 (@Searchable)将需要进行查询的实体进行映射注解。下面介绍几种常用的注解:

@Searchable  -->作用把该类定义为搜索实体,该实体跟索引的document进行映射 

@Searchable(root=false) -->不需要索引但需要存储,该类不是独立的搜索实体,只作为root类的配角,作为root类的一部分;跟@SearchableComponent一起使用。

@SearchableId-->作用定义该属性为搜索实体的标识属性,默认映射到documentid字段

@SearchProperty(name="xxxx")  -->将索引字段重命名

@SearchableProperty(boot=2name="productName")-->boot数字越大级别越高

@SearchableProperty(index=Index.NOT_ANALYZED,store=Store.YES) -->不需要索引,需要存储

@SearchableReference -->复合类型的id设置为索引字段;只能得到该类的ID,无法得到其他属性。

@SearchableComponent-->复合类型的属性设置为索引字段;能得到该类的ID,也能得到其他属性;在该类设置为@Searchable(root=false)作为root的一部分。

3、paoding的安装步骤

1>把安装目录下的paoding-analysis.jar文件拷贝到项目的classpath

2>把安装目录下的dic整个拷贝到项目的src

3>从安装目录下classes目录中的paoding-dic-home.properties拷贝到项目的src.并且在文件中添加如下内容:

paoding.dic.home=classpath:dic

4>如果遇到报错,请检查你工程所在的路径是否有中文或者带空格!

4、接下来就是在spring中配置compass,完成spring和compass之间的集成

将最上面的那段配置信息拷到相应的spring配置文件bean.xml中即可。接下来测试一下集成是否成功。重新部署应用,tomcat没有错误,并查看到索引文件的路径,上面配置的路径是file://d:/index;查看d盘是否多了个文件夹index,若看到该文件夹表示配置成功!

原创粉丝点击