Hibernate+Spring+Compass 集成
不知道红色区域怎么设置??我的数据都是放在数据中的 当tomcat加载后在compassIndex文件夹建立了索引文件 但是查不出结果 数据库中确实有数据!!?????   在索引库中建立的索引文件 (<prop key="compass.engine.connection">
compassIndex
</prop>
)  但是搜出来的结果却是0!!!  不知道是哪有问题??--------------Spring.xml
<!-- compass2.2 start -->
<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/Model/</value>
</list>
</property>
<property name="classMappings">
<list>
<value>com.Model.ticketModel</value>
</list>
</property>
<property name="compassConfiguration" ref="annotationConfiguration" />
<property name="compassSettings">
<props>
<prop key="compass.engine.analyzer.MMAnalyzer.CustomAnalyzer"> jeasy.analysis.MMAnalyzer </prop>
<prop key="compass.engine.highlighter.default.formatter.simple.pre">
  <![CDATA[<font color="red"><b>]]>
</prop>
<prop key="compass.engine.highlighter.default.formatter.simple.post">
  <![CDATA[</b></font>]]>
</prop>
<prop key="compass.engine.connection">
compassIndex
</prop>

<prop key="compass.transaction.factory">
org.compass.spring.transaction.SpringSyncTransactionFactory
</prop>
</props>
</property>
<property name="transactionManager" ref="transactionManager" />
</bean>
<!-- hibernate+spring集成 -->
<bean id="hibernateGpsDevice"
class="org.compass.spring.device.hibernate.dep.SpringHibernate3GpsDevice">
<property name="name">
<value>hibernateDevice</value>
</property>
<property name="sessionFactory">
<ref bean="SessionFactory" />
</property>
</bean>
<bean id="compassGps" class="org.compass.gps.impl.SingleCompassGps"
init-method="start" destroy-method="stop">
<property name="compass">
<ref bean="compass" />
</property>
<property name="gpsDevices">
<list>
<bean
class="org.compass.spring.device.SpringSyncTransactionGpsDeviceWrapper">
<property name="gpsDevice" ref="hibernateGpsDevice" />
</bean>
</list>
</property>
</bean><bean id="compassIndexBuilder" class="com.DaoImp.CompassIndexBuilder">
<property name="compassGps" ref="compassGps" />
<property name="buildIndex" value="true" />
</bean>
<bean id="compassTemplate" class="org.compass.core.CompassTemplate">
<property name="compass" ref="compass" />
</bean><!-- compass2.2 end -->
---------------------Main方法
public static void main(String[] args) {
ApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");
ticketBizImp biz=(ticketBizImp) ctx.getBean("biz");
List list=biz.searchCompass("大");
System.out.println(list.size());
}
--------------方法
public List<ticketModel> searchCompass(String query) {
System.out.println("=======================================");
List<ticketModel> list=new ArrayList<ticketModel>();
Compass compass=compassTemplate.getCompass();
System.out.println("compass:"+compass);
CompassSession session=compass.openSession();
CompassSearchCommand command=new CompassSearchCommand();
command.setQuery(query);
CompassHits hits=session.queryBuilder().queryString(command.getQuery().trim()).toQuery().hits();
System.out.println("------------------------queryString:"+query);
System.out.println("------------------------hits:"+hits.getLength());
for(int i=0;i<hits.getLength();i++){
ticketModel tm=(ticketModel) hits.data(i);
String ticket_name=hits.highlighter(i).fragment("ticket_name");
System.out.println("---------------------ticket_name:"+ticket_name);
if(ticket_name!=null){
tm.setTicket_name(ticket_name);
}
list.add(tm);
System.out.println("----------------ticket_GetName:"+tm.getTicket_name());
}
return list;
}
-------------------结果
=======================================
compass:org.compass.core.impl.RefreshableCompass@18e8fe0
------------------------queryString:大
------------------------hits:0
0

解决方案 »

  1.   

    额...配置文件太长了 。
    给一个我当年的配置吧。。<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
    <beans default-lazy-init="true">
    <!-- 核心Compass Bean,search及index时使用 -->
    <bean id="compass" class="org.compass.spring.LocalCompassBean">
    <!--
    <property name="resourceDirectoryLocations">
    <list>
    <value>classpath*:/com/kp/oais/entity</value>
    </list>
    </property>
            -->
    <!-- anontaition式设置 -->
    <property name="classMappings">
    <list>
      <value>com.kp.oais.entity.Docs</value> 
      <value>com.kp.oais.entity.Pics</value> 
      <value>com.kp.oais.entity.Avs</value> 
      <value>com.kp.oais.entity.DocFile</value> 
      <value>com.kp.oais.entity.PicFile</value> 
      <value>com.kp.oais.entity.AvFiles</value> 
    </list>
    </property> <property name="compassConfiguration">
    <bean class="org.compass.annotations.config.CompassAnnotationsConfiguration"/>
    </property>

    <property name="connection">
                <value>file:///data/indexes</value>
            </property>
            
    <property name="compassSettings">
    <props>
    <!--
    <prop key="compass.engine.connection">
    file://d:/compass
    </prop>
    -->
    <prop key="compass.transaction.factory">
    org.compass.spring.transaction.SpringSyncTransactionFactory
    </prop>
    <prop key="compass.engine.highlighter.default.formatter.simple.pre">
    <![CDATA[<font color="red"><b>]]>
    </prop>
    <prop key="compass.engine.highlighter.default.formatter.simple.post">
    <![CDATA[</b></font>]]>
    </prop>
    <!-- org.wltea.analyzer.lucene.IKAnalyzer -->
    <prop key="compass.engine.analyzer.default.type">net.paoding.analysis.analyzer.PaodingAnalyzer</prop> 
    <!-- 定义分词器 -->
    <prop key="compass.engine.analyzer.MMAnalyzer.CustomAnalyzer">net.paoding.analysis.analyzer.PaodingAnalyzer</prop>
    <!-- 字典分词,正反双向搜索 
    <prop key="compass.engine.analyzer.MMAnalyzer.CustomAnalyzer">org.mira.lucene.analysis.IK_CAnalyzer</prop> -->
    </props>
    </property> <property name="transactionManager" ref="transactionManager"/>
    </bean>

    <!-- hibernateGPS定位配置 --> 
    <bean id="hibernateGpsDevice" class="org.compass.gps.device.hibernate.HibernateGpsDevice"> 
    <property name="name" value="hibernateDevice"/> 
    <property name="sessionFactory" ref="sessionFactory" />
    </bean> 

    <!-- Compass中建立索引与mirror database change的部件 -->
    <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.hibernate.SpringHibernate3GpsDevice">
    <property name="name" value="hibernateDevice"/>
    <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
    -->
    <ref local="hibernateGpsDevice"/>
    </list>
    </property>
    </bean> <!--
    <bean id="compassSearchService" class="com.kp.oais.service.compass.CompassSearchService">
    <property name="compass" ref="compass"/>
    <property name="pageSize" value="15"/>
    </bean>
    --> <bean id="compassTemplate" class="org.compass.core.CompassTemplate">
    <property name="compass" ref="compass" />
    </bean> <!-- 自动随Spring ApplicationContext启动而重建索引 -->

    <bean id="compassIndexBuilder" class="com.kp.oais.service.compass.CompassIndexBuilder" lazy-init="false">
    <property name="compassGps" ref="compassGps"/>
    <property name="buildIndex" value="true"/>
    <property name="lazyTime" value="10"/>
    </bean>

    <!-- 手工生成索引 

    <bean id="indexBookController" class="org.compass.spring.web.mvc.CompassIndexController"> 
      <property name="compassGps" ref="compassGps"/>
      <property name="indexView" value="/admin/indexBook.jsp"/>
      <property name="indexResultsView" value="/admin/indexBook.jsp"/>
    </bean>
    <bean id="searchBookController" class="org.compass.spring.web.mvc.CompassSearchController">
        <property name="compass" ref="compass"/>
        <property name="searchView" value="/home/top.jsp"/>
        <property name="searchResultsView" value="/home/searchBook.jsp"/>
        <property name="pageSize" value="5"/>
     </bean> 
     -->
    </beans>
      

  2.   

    <prop key="compass.engine.connection">
    compassIndex
    </prop><property name="resourceDirectoryLocations">
                <list>
                    <value>classpath*:/com/kp/oais/entity</value>
                </list>
            </property>
        能解释下这两个所指向的是什么么????