不做浮躁的人
正在行走的人...
posts - 171,  comments - 51,  trackbacks - 0

GPS通过2个概念提供了整合不同的可索引的数据源:CompassGps和CompassGpsDevice。Device可以结合任何类型的可索引数据来源,它提供索引数据、搜索数据、敏感数据变化的能力。 GPS建立在Compass基础之上。利用Compass的特征,如:事务、OSEM以及API等。

CompassGps是GPS的主要接口,它拥有一系列的CompassGpsDevices,并且管理他们的生命周期。

Compass提供了两个Gps的实现:
SingleCompassGps:拥有一个compass实例。这个compass实例用来做索引和镜像操作。
DualCompassGps:拥有两个Compass实例。indexCompass和mirrorCompass。主要处理两个事务级别。indexCompass一般采用batch_insert隔离级别,而mirrorCompass采用read_committed事务级别。

hibernate Gps Device

hb3新的基于时间的机制提供了实时数据改变的镜像。数据的传送顺序为:Database -- Hibernate -- Objects -- Compass::Gps --Compass::Core (Search Engine).
在hb3中,程序配置:
Compass compass = ... // set compass instance
CompassGps gps = new SingleCompassGps(compass);
CompassGpsDevice hibernateDevice =
new Hibernate3GpsDevice("hibernate", sessionFactory);
gps.addDevice(hibernateDevice);
.... // configure other devices
gps.start();

hibernate device提供了一个fetchCount参数,这个参数控制索引一个类的分页进程。

实时数据镜像:在hb3中是基于新的时间机制。数据改变将会反射给compass index。配置时要注意的是系统和compass必须使用相同的SessionFactory。如果使用hb3和spring,请使用SpringHibernate3GpsDevice。

Compass与spring结合:
1:支持compass级别的工厂bean。采用Spring ioc的配置选项。
2:提供Compass DAO级别的支持。采用事务整合和DAO支持类。
3:扩展GPS Hiberante3 device。
4:提供OJB的整合支持。
5:提供Spring MVC的搜索控制器和索引控制器。

spring中配置compass bean:
<bean id="compass"
class="org.compass.spring.LocalCompassBean">
<property name="resourceLocations">
<list>
<value>classpath:org/compass/spring/test/A.cpm.xml</value>
</list>
</property>
<property name="compassSettings">
<props>
<prop key="compass.engine.connection">
target/testindex
</prop>
<!-- This is the default transaction handling
(just explicitly setting it) -->
<prop key="compass.transaction.factory">
org.compass.core.transaction.LocalTransactionFactory
</prop>
</props>
</property>
</bean>

compass提供CompassDaoSupport类来执行Dao操作。

public class LibraryCompassDao extends CompassDaoSupport {
public int getNumberOfHits(final String query) {
Integer numberOfHits = (Integer)getCompassTemplate().execute(
new CompassCallback() {
public Object doInCompass(CompassSession session) {
CompassHits hits = session.find(query);
return new Integer(hits.getLength());
}
}
);
}
return numberOfHits.intValue();
}

然后配置该DAO类使用的Compass实例:
<beans>
<bean id="libraryCompass" class="LibraryCompassDao">
<property name="compass">
<ref local="compass" />
</property>
</bean>
</beans>

SpringSyncTransaction:compass将同步spring本身的事务.
SpringHibernate3GpsDevice:对Hibernate3GpsDevice的扩展,能够处理spring带来的sessionFactory以便使用时间机制监听实时数据改变。

posted on 2006-12-02 15:46 不做浮躁的人 阅读(3293) 评论(1)  编辑  收藏

FeedBack:
# re: compass学习笔记4
2008-11-20 10:15 | 老丁
遇到 clob和blob 会报错怎么解决啊?

Exception in thread "main" org.compass.core.mapping.MappingException: No converter defined for type [java.sql.Clob]

  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 

<2006年12月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

常用链接

留言簿(9)

随笔分类(31)

随笔档案(75)

文章分类(1)

文章档案(3)

搜索

  •  

最新评论

阅读排行榜

评论排行榜