一、用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-->作用定义该属性为搜索实体的标识属性,默认映射到document的id字段

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

@SearchableProperty(boot=2,name="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,若看到该文件夹表示配置成功!

转载于:https://www.cnblogs.com/masterlyl/archive/2011/12/26/compass.html

spring集成compass中出现的问题和总结相关推荐

  1. windows api中文文档_Web服务开发:Spring集成Swagger,3步自动生成API文档

    目录: 1,Spring Boot集成Swagger 2,Swagger接口文档页面 3,常见问题和解决方法 在Sping开发REST接口服务时,API文档是不可缺少的一个重要部分.Swagger框架 ...

  2. Struts2与Spring集成中的自动装配策略

    http://www.blogjava.net/jeffma/archive/2010/11/30/339414.html 自动装配即bean之间的依赖关系无需手动配置. 1.    与自动装配有关的 ...

  3. 将Spring集成到旧版应用程序中

    所有Spring开发人员喜欢做的事情之一就是将Spring塞入他们正在工作的任何应用程序中–这是我生活中的罪恶感之一:您看到一些代码,认为它是垃圾,因为它包含几个众所周知的反模式,然后想想如果这个应用 ...

  4. Spring Boot项目中集成Elasticsearch,并实现高效的搜索功能

    Spring Boot项目中集成Elasticsearch 前言 环境准备 引入依赖 配置Elasticsearch连接信息 定义实体类 定义Elasticsearch操作接口 实现搜索功能 总结 前 ...

  5. SCA与spring集成(在spring中开发SOA)

    客户端调用与Tuscany SCA相同 服务端的配置如下: sca.composite <?xml version="1.0" encoding="UTF-8&qu ...

  6. Spring集成Redis方案(spring-data-redis)(基于Jedis的单机模式)(待实践)

    说明:请注意Spring Data Redis的版本以及Spring的版本!最新版本的Spring Data Redis已经去除Jedis的依赖包,需要自行引入,这个是个坑点.并且会与一些低版本的Sp ...

  7. 从零开始学 Java - Spring 集成 Memcached 缓存配置(二)

    Memcached 客户端选择 上一篇文章 从零开始学 Java - Spring 集成 Memcached 缓存配置(一)中我们讲到这篇要谈客户端的选择,在 Java 中一般常用的有三个: Memc ...

  8. Spring集成线程池

    自己在程序中手动New很容易造成线程滥用,创建线程也是比较消耗资源的操作,所以建议如果有此需求,将线程池统一交给Spring框架进行管理. 如下: <!--Spring 集成线程池,不允许自己开 ...

  9. JBPM4.4_jBPM4.4应用(与Spring集成自行控制事务等)

    1. jBPM4.4应用 1.1. 与Spring集成(jBPM4.4 Developers Guide, Chapter 17. Spring Integration) 1.1.1. 在jbpm.c ...

最新文章

  1. 困惑度 (perplexity)
  2. Content Compression Resistance和Content Hugging
  3. 【OS】经典调度算法
  4. HP P2000 RAID-5两块盘离线的数据恢复报告
  5. 【深度学习】mask_rcnn训练自己的数据集以及模型使用(实践结合GitHub项目)
  6. 清华大学-曾鸣-《ARM微控制器与嵌入式系统》I2C总线(二)
  7. linux5.5 里dns,linux red hat 5.5 dns 问题求解
  8. 更新数据时出错——所有记录中均未找到搜索关键字
  9. 吐血整理,2021年最新【阿里、头条、美团】【软件测试】面试题(持续更新!)
  10. Word转换成pdf之pdf虚拟打印机如何使用操作教程
  11. python快速搭建服务器方法
  12. linux解压缩包命令
  13. ViewPager example -实现左右两个屏幕的切换
  14. c语言fflush,c语言中fflush(stdin)作用(转)
  15. mysql物理删除索引_mysql创建索引,mysql索引优化,mysql索引创建删除
  16. 【SGD深入理解】vanilia SGDmomentum SGD
  17. 初学SQL 注入之常见的几种注入类型
  18. 朴素贝叶斯模型简单理解
  19. OpenFaaS实战之八:自制模板(maven+jdk8),美团java面试算法题
  20. 71页大数据治理运营整体解决方案(附下载)

热门文章

  1. span标签的鼠标滑入提示_彻底搞懂拖拽——基于鼠标事件的拖拽以及基于HTML5 API的拖拽...
  2. 调整oracle scn,在Oracle中增进SCN及案例介绍
  3. delete select语句_MySQL InnoDB锁介绍及不同SQL语句分别加什么样的锁
  4. android 友盟推送获取不到devicetoken,使用友盟消息推送中遇到的哪些问题--索引(开发者必读)...
  5. linux 监控命令iostat,Linux性能监控分析命令(三)—iostat命令介绍
  6. php 反射 调用私有方法,PHP通过反射方法调用执行类中的私有方法
  7. opengl 实时波形显示_OpenGL1------OpenGL概述
  8. matlab levy,Levy Flight 模型及Matlab实现
  9. 2 如何设置窗口title_如何正确的知晓生僻字发音?无需字典查询,2步手机设置轻松搞定...
  10. oracle数据库通过SQL profile 绑定SQL最优执行计划(个人实践)