| « | November 2025 | » | | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | | | | | | |
| 公告 |
| 本博客在此声明所有文章均为转摘,只做资料收集使用。并无其他商业用途。 |
| Blog信息 |
|
blog名称: 日志总数:210 评论数量:205 留言数量:-19 访问次数:928206 建立时间:2007年5月10日 |

| |
|
[Compass]compass学习笔记4 文章收藏, 网上资源, 软件技术, 电脑与网络
李小白 发表于 2007/5/10 16:04:36 |
| 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 Devicehb3新的基于时间的机制提供了实时数据改变的镜像。数据的传送顺序为:Database -- Hibernate -- Objects -- Compass::Gps --Compass::Core (Search Engine).在hb3中,程序配置:Compass compass = ... // set compass instanceCompassGps gps = new SingleCompassGps(compass);CompassGpsDevice hibernateDevice =new Hibernate3GpsDevice("hibernate", sessionFactory);gps.addDevice(hibernateDevice);.... // configure other devicesgps.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以便使用时间机制监听实时数据改变。 |
|
|