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
不知道红色区域怎么设置??我的数据都是放在数据中的 当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
给一个我当年的配置吧。。<?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>
compassIndex
</prop><property name="resourceDirectoryLocations">
<list>
<value>classpath*:/com/kp/oais/entity</value>
</list>
</property> 能解释下这两个所指向的是什么么????