<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type='text/xsl' href='http://dengyin2000.spaces.live.com/mmm2008-07-24_12.50/rsspretty.aspx?rssquery=en-US;http%3a%2f%2fdengyin2000.spaces.live.com%2fcategory%2fCompass%2bLucene%2ffeed.rss' version='1.0'?><rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:msn="http://schemas.microsoft.com/msn/spaces/2005/rss" xmlns:live="http://schemas.microsoft.com/live/spaces/2006/rss" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Java Dreams: Compass Lucene</title><description /><link>http://dengyin2000.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&amp;_c=BlogPart&amp;partqs=catCompass%2bLucene</link><language>en-US</language><pubDate>Sat, 02 Aug 2008 01:08:53 GMT</pubDate><lastBuildDate>Sat, 02 Aug 2008 01:08:53 GMT</lastBuildDate><generator>Microsoft Spaces v1.1</generator><docs>http://www.rssboard.org/rss-specification</docs><ttl>60</ttl><cf:parentRSS>http://dengyin2000.spaces.live.com/blog/feed.rss</cf:parentRSS><live:type>blogcategory</live:type><live:identity><live:id>-5815636772130029849</live:id><live:alias>dengyin2000</live:alias></live:identity><cf:listinfo><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="typelabel" label="Type" /><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="tag" label="Tag" /><cf:group element="category" label="Category" /><cf:sort element="pubDate" label="Date" data-type="date" default="true" /><cf:sort element="title" label="Title" data-type="string" /><cf:sort ns="http://purl.org/rss/1.0/modules/slash/" element="comments" label="Comments" data-type="number" /></cf:listinfo><item><title>Compass读文档笔记</title><link>http://dengyin2000.spaces.live.com/Blog/cns!AF4AB52B167D7EE7!206.entry</link><description>&lt;div style="text-align:center"&gt;     Compass读文档笔记&lt;br&gt;&lt;/div&gt;
  
       
    Compass是基于&lt;a href="http://lucene.apache.org/" title=Lucene&gt;Lucene&lt;/a&gt;
    &lt;a href="http://www.opensymphony.com/compass/content/lucene.html"&gt;
    &lt;/a&gt;的更高层的抽象，假如你正打算做关于搜索方面的模块的话，那我建议你使用Compass，他提供了可配置方案，而且比Lucene更加容易使用。如果你的系统中使用Spring，
    Hibernate，JDO， IBatis。。。 Compass是最好的选择，他能够非常方便的集成到现有系统中去。&lt;br&gt;
    1.   Compass的framework的系统结构。&lt;br&gt;
    感觉Compass的代码的结构简直就是剽窃Hibernate的，可能Compass的最初目的是用来整合Hibernate的，&lt;br&gt;
    &lt;pre&gt;CompassConfiguration conf =&lt;br&gt;    new CompassConfiguration().configure().addClass(Author.class);&lt;br&gt;Compass compass = conf.buildCompass();&lt;br&gt;CompassSession session = compass.openSession();&lt;br&gt;CompassTransaction tx = null;&lt;br&gt;try {&lt;br&gt;    tx = session.beginTransaction();&lt;br&gt;    ...&lt;br&gt;    session.save(author);&lt;br&gt;    CompassHits hits = session.find(&amp;quot;jack london&amp;quot;);&lt;br&gt;    Author a = (Author) hits.data(0);&lt;br&gt;    Resource r = hits.getResource(0);&lt;br&gt;    ...&lt;br&gt;    tx.commit();&lt;br&gt;} catch (CompassException ce) {&lt;br&gt;    if (tx != null) tx.rollback();&lt;br&gt;} finally {&lt;br&gt;    session.close();&lt;br&gt;}&lt;br&gt;&lt;br&gt;假如你对Hibernate有了解的话，相信你对Compass会比较容易理解的，你可以把Hibernate的思想转移到Compass上。现在让我们看看他们之间的相似吧。&lt;br&gt;&lt;tt&gt;compass.cfg.xml&lt;/tt&gt;&lt;br&gt;&lt;/pre&gt;
    &amp;lt;compass-core-config
    xmlns=&amp;quot;http://www.opensymphony.com/compass/schema/core-config&amp;quot;&lt;br&gt;
    &lt;pre&gt;  xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br&gt;  xsi:schemaLocation=&amp;quot;http://www.opensymphony.com/compass/schema/core-config&lt;br&gt;           http://www.opensymphony.com/compass/schema/compass-core-config.xsd&amp;quot;&amp;gt;&lt;br&gt;&lt;br&gt;   &amp;lt;compass name=&amp;quot;default&amp;quot;&amp;gt;&lt;br&gt;      &amp;lt;connection&amp;gt;&lt;br&gt;          &amp;lt;file path=&amp;quot;target/test-index&amp;quot;/&amp;gt;&lt;br&gt;      &amp;lt;/connection&amp;gt;&lt;br&gt;   &lt;br&gt;      &amp;lt;mappings&amp;gt;&lt;br&gt;          &amp;lt;class name=&amp;quot;test.Author&amp;quot; /&amp;gt;&lt;br&gt;      &amp;lt;/mappings&amp;gt;&lt;br&gt;   &lt;br&gt;   &amp;lt;/compass&amp;gt;&lt;br&gt;&amp;lt;/compass-core-config&amp;gt;   &lt;br&gt;这个是Compass总的配置文件，其中定义了索引文件存储的位置（这里是用文件系统，Compass有多种选择，你也可以选数据库或其他），Compass索引的对象是面向PoJo的，这里的是Author，对应的文件是test/Author.cpm.xml.&lt;br&gt;当然这里面的配置属性不止这么多，更多的属性见&lt;a href="http://www.opensymphony.com/compass/versions/0.9.2-SNAPSHOT/html/core-settings.html#CompassSettings" title="Configure属性"&gt;Configure属性&lt;/a&gt;。&lt;br&gt;&lt;br&gt;CompassConfiguration conf = new CompassConfiguration()&lt;br&gt;     .setSetting(CompassEnvironment.CONNECTION, &amp;quot;my/index/dir&amp;quot;)&lt;br&gt;     .addResource(DublinCore.cmd.xml).addClass(Author.class);&lt;br&gt;Compass compass = conf.buildCompass();&lt;br&gt;这里我们CompassConfiguration会读取默认的在classpath中的&lt;tt&gt;&lt;tt&gt;compass.cfg.xml初始化，然后得到Compass对象，可能你会马上意思到这个Compass肯定对应于Hibenate中的SessionFactory，是的，这是一个重量级的对象，&lt;br&gt;&lt;/tt&gt;&lt;/tt&gt;我们需要通过这个对象得到CompassSession，然后进行CRUD操作，CompassSession跟Hibernate中的Session一样是个lightweight对象。关于对Search domain的配置(Author.cpm.xml),大家可以查看&lt;a href="http://www.opensymphony.com/compass/versions/0.9.2-SNAPSHOT/html/core-osem-xml.html" title="cpm文件配置"&gt;cpm文件配置&lt;/a&gt;。在那里面&lt;br&gt;主要是定义了那些properties是需要被索引的。&lt;br&gt;&lt;br&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br&gt;&amp;lt;!DOCTYPE compass-core-mapping PUBLIC&lt;br&gt;    &amp;quot;-//Compass/Compass Core Mapping DTD 1.0//EN&amp;quot;&lt;br&gt;    &amp;quot;http://www.opensymphony.com/compass/dtd/compass-core-mapping.dtd&amp;quot;&amp;gt;&lt;br&gt;&lt;br&gt;&amp;lt;compass-core-mapping package=&amp;quot;eg&amp;quot;&amp;gt;&lt;br&gt;&lt;br&gt;  &amp;lt;class name=&amp;quot;Author&amp;quot; alias=&amp;quot;author&amp;quot;&amp;gt;&lt;br&gt;&lt;br&gt;    &amp;lt;id name=&amp;quot;id&amp;quot; /&amp;gt;&lt;br&gt;&lt;br&gt;    &amp;lt;constant&amp;gt;&lt;br&gt;      &amp;lt;meta-data&amp;gt;type&amp;lt;/meta-data&amp;gt;&lt;br&gt;      &amp;lt;meta-data-value&amp;gt;person&amp;lt;/meta-data-value&amp;gt;&lt;br&gt;      &amp;lt;meta-data-value&amp;gt;author&amp;lt;/meta-data-value&amp;gt;&lt;br&gt;    &amp;lt;/constant&amp;gt;&lt;br&gt;&lt;br&gt;    &amp;lt;property name=&amp;quot;name&amp;quot;&amp;gt;&lt;br&gt;      &amp;lt;meta-data&amp;gt;name&amp;lt;/meta-data&amp;gt;&lt;br&gt;      &amp;lt;meta-data&amp;gt;authorName&amp;lt;/meta-data&amp;gt;&lt;br&gt;    &amp;lt;/property&amp;gt;&lt;br&gt;&lt;br&gt;    &amp;lt;property name=&amp;quot;birthday&amp;quot;&amp;gt;&lt;br&gt;      &amp;lt;meta-data&amp;gt;birthday&amp;lt;/meta-data&amp;gt;&lt;br&gt;    &amp;lt;/property&amp;gt;&lt;br&gt;&lt;br&gt;    &amp;lt;component name=&amp;quot;books&amp;quot; ref-alias=&amp;quot;book&amp;quot; /&amp;gt;&lt;br&gt;&lt;br&gt;    &amp;lt;!-- can be a reference instead of component&lt;br&gt;    &amp;lt;reference name=&amp;quot;books&amp;quot; ref-alias=&amp;quot;book&amp;quot; /&amp;gt;&lt;br&gt;    --&amp;gt;&lt;br&gt;&lt;br&gt;  &amp;lt;/class&amp;gt;&lt;br&gt;&lt;br&gt;  &amp;lt;class name=&amp;quot;Book&amp;quot; alias=&amp;quot;book&amp;quot;&amp;gt;&lt;br&gt;&lt;br&gt;    ...&lt;br&gt;&lt;br&gt;  &amp;lt;/class&amp;gt;&lt;br&gt;&lt;br&gt;&amp;lt;/compass-core-mapping&amp;gt;&lt;br&gt;&lt;br&gt;2.  索引文件结构&lt;br&gt;---[index dir]/index&lt;br&gt;  |&lt;br&gt;  |-- [subIndex1]&lt;br&gt;  |      |&lt;br&gt;  |      |--- segments&lt;br&gt;  |      |--- [segment1]&lt;br&gt;  |      |--- [segment2]&lt;br&gt;  |&lt;br&gt;  |-- [subIndex2]&lt;br&gt;  |      |&lt;br&gt;  |      |--- segments&lt;br&gt;  |      |--- [segment1]&lt;br&gt;  |      |--- [segment2]&lt;br&gt;  |      |--- [segment3]&lt;br&gt;  |&lt;br&gt;...&lt;br&gt;基本上是一个search domain放到一个subIndex文件夹中，更确切的说是相同alias name的search domain放到相同的sub index folder中。&lt;br&gt;&lt;br&gt;3.  Compass中的操作&lt;br&gt;通过CompassSession我们可以进行save，delete， get，load。假如我们有两个domain Object，Author 和 Book，假如我们想要query Book的话要怎样做呢？ 我们需要使用alias（这个属性定义在cmp文件中），&lt;br&gt;通过CompassQueryBuilder去构造CompassQuery, CompassQueryBuilder非常灵活，非常像Hibernate的Criteria查询。具体的sample请看 &lt;a href="http://www.opensymphony.com/compass/versions/0.9.2-SNAPSHOT/html/core-workingwithobjects.html" title="Working with objects"&gt;Working with objects&lt;/a&gt;  &lt;br&gt;&lt;br&gt;CompassHits hits = session.createQueryBuilder()&lt;br&gt;  .queryString(&amp;quot;+name:jack +familyName:london&amp;quot;)&lt;br&gt;    .setAnalyzer(&amp;quot;an1&amp;quot;) // use a different analyzer&lt;br&gt;  .toQuery()&lt;br&gt;    .addSort(&amp;quot;familyName&amp;quot;, CompassQuery.SortPropertyType.STRING)&lt;br&gt;    .addSort(&amp;quot;birthdate&amp;quot;, CompassQuery.SortPropertyType.INT)&lt;br&gt;  .hits();&lt;br&gt;&lt;br&gt;4.  CompassGps and CompassGpsDevice&lt;br&gt;CompassGps像是一个Service，他需要在application startup时启动服务， application shutdown停止服务，CompassGpsDevice不能独立的存在，他需要依赖CompassGps， CompassGps为CompassGpsDevice提供&lt;br&gt;Compass对象，他们一起为程序提供Index的实时更新。 Compass整合Hibernate 等等 persitance framework的代码就在CompassGpsDevice里，你需要提供不同的Device，如HibernateDevice， JDODevice。你也&lt;br&gt;可以实现自己的Device， CompassGpsDevice会把domain object的更新事件通过CompassGps去通知Compass去更新索引文件，这样就是可以实时更新index了。有兴趣的话可以看看Hibernate3GpsDevice的&lt;br&gt;registerEventsForHibernate31（）方法，他给Hibernate的save，delete，update操作增加listener。当然我们可以使用aop自己去实现这块。&lt;a href="http://www.opensymphony.com/compass/versions/0.9.2-SNAPSHOT/html/gps-introduction.html" title="CompassGps and CompassGpsDevice"&gt;CompassGps and CompassGpsDevice&lt;/a&gt;  &lt;br&gt;&lt;br&gt;Compass compass = ... // configure compass&lt;br&gt;CompassGps gps = new SingleCompassGps(compass);&lt;br&gt;CompassGpsDevice device1 = ... // configure the first device&lt;br&gt;device1.setName(&amp;quot;device1&amp;quot;);&lt;br&gt;gps.addDevice(device1);&lt;br&gt;CompassGpsDevice device2 = ... // configure the second device&lt;br&gt;device2.setName(&amp;quot;device2&amp;quot;);&lt;br&gt;gps.addDevice(device2);&lt;br&gt;&lt;br&gt;gps.start();&lt;br&gt;....&lt;br&gt;....&lt;br&gt;//on application shutdown&lt;br&gt;gps.stop();&lt;br&gt;&lt;br&gt;5.  整合Spring，Hibenate&lt;br&gt;在Compass的lib里面就有非常好的一个sample了（petclinic），里面有对Spring，Hibenate的整合，其实对spring来说也就是通过ioc把CompassGps 和 Compass定义好。CompassGps主要负责re－index和index实时更新&lt;br&gt;， Compass主要提供了自定义Search部分的入口（CompassTemplate）。Spring提供了对Compass的DAO的整合，在CompassDaoSupport 中拿到CompassTemplate，这个跟spring对hibernatedao的支持是一致的。&lt;br&gt;&lt;br&gt;public class LibraryCompassDao extends CompassDaoSupport {&lt;br&gt;    public int getNumberOfHits(final String query) {&lt;br&gt;       Integer numberOfHits = (Integer)getCompassTemplate().execute(&lt;br&gt;           new CompassCallback() {&lt;br&gt;               public Object doInCompass(CompassSession session) {&lt;br&gt;                  CompassHits hits = session.find(query);&lt;br&gt;                  return new Integer(hits.getLength());&lt;br&gt;               }&lt;br&gt;           }&lt;br&gt;       );&lt;br&gt;    }&lt;br&gt;    return numberOfHits.intValue();&lt;br&gt;}&lt;br&gt;&amp;lt;beans&amp;gt;&lt;br&gt;   &amp;lt;bean id=&amp;quot;libraryCompass&amp;quot; class=&amp;quot;LibraryCompassDao&amp;quot;&amp;gt;&lt;br&gt;      &amp;lt;property name=&amp;quot;compass&amp;quot;&amp;gt;&lt;br&gt;         &amp;lt;ref local=&amp;quot;compass&amp;quot; /&amp;gt;&lt;br&gt;      &amp;lt;/property&amp;gt;&lt;br&gt;   &amp;lt;/bean&amp;gt;&lt;br&gt;&amp;lt;/beans&amp;gt;&lt;br&gt;	 &amp;lt;!-- COMPASS START --&amp;gt;&lt;br&gt;    &amp;lt;bean id=&amp;quot;compass&amp;quot; class=&amp;quot;org.compass.spring.LocalCompassBean&amp;quot;&amp;gt;&lt;br&gt;        &amp;lt;property name=&amp;quot;resourceLocations&amp;quot;&amp;gt;&lt;br&gt;            &amp;lt;list&amp;gt;&lt;br&gt;                &amp;lt;value&amp;gt;classpath:org/compass/sample/petclinic/petclinic.cmd.xml&amp;lt;/value&amp;gt;&lt;br&gt;                &amp;lt;value&amp;gt;classpath:petclinic.cpm.xml&amp;lt;/value&amp;gt;&lt;br&gt;            &amp;lt;/list&amp;gt;&lt;br&gt;        &amp;lt;/property&amp;gt;&lt;br&gt;        &amp;lt;property name=&amp;quot;compassSettings&amp;quot;&amp;gt;&lt;br&gt;            &amp;lt;props&amp;gt;&lt;br&gt;                &amp;lt;prop key=&amp;quot;compass.engine.connection&amp;quot;&amp;gt;file://${user.home}/compass/petclinic&amp;lt;/prop&amp;gt;&lt;br&gt;                &amp;lt;prop key=&amp;quot;compass.transaction.factory&amp;quot;&amp;gt;org.compass.spring.transaction.SpringSyncTransactionFactory&amp;lt;/prop&amp;gt;&lt;br&gt;            &amp;lt;/props&amp;gt;&lt;br&gt;        &amp;lt;/property&amp;gt;&lt;br&gt;        &amp;lt;property name=&amp;quot;transactionManager&amp;quot;&amp;gt;&lt;br&gt;            &amp;lt;ref local=&amp;quot;transactionManager&amp;quot; /&amp;gt;&lt;br&gt;        &amp;lt;/property&amp;gt;&lt;br&gt;    &amp;lt;/bean&amp;gt;&lt;br&gt;	 &amp;lt;bean id=&amp;quot;hibernateGpsDevice&amp;quot; class=&amp;quot;org.compass.spring.device.hibernate.SpringHibernate3GpsDevice&amp;quot;&amp;gt;&lt;br&gt;	   &amp;lt;property name=&amp;quot;name&amp;quot;&amp;gt;&amp;lt;value&amp;gt;hibernateDevice&amp;lt;/value&amp;gt;&amp;lt;/property&amp;gt;&lt;br&gt;	   &amp;lt;property name=&amp;quot;sessionFactory&amp;quot;&amp;gt;&amp;lt;ref local=&amp;quot;sessionFactory&amp;quot; /&amp;gt;&amp;lt;/property&amp;gt;&lt;br&gt;	 &amp;lt;/bean&amp;gt;&lt;br&gt;	 &amp;lt;bean id=&amp;quot;compassGps&amp;quot; class=&amp;quot;org.compass.gps.impl.SingleCompassGps&amp;quot; init-method=&amp;quot;start&amp;quot; destroy-method=&amp;quot;stop&amp;quot;&amp;gt;&lt;br&gt;	   &amp;lt;property name=&amp;quot;compass&amp;quot;&amp;gt;&amp;lt;ref bean=&amp;quot;compass&amp;quot; /&amp;gt;&amp;lt;/property&amp;gt;&lt;br&gt;	   &amp;lt;property name=&amp;quot;gpsDevices&amp;quot;&amp;gt;&lt;br&gt;	     &amp;lt;list&amp;gt;&lt;br&gt;	       &amp;lt;ref local=&amp;quot;hibernateGpsDevice&amp;quot; /&amp;gt;&lt;br&gt;	     &amp;lt;/list&amp;gt;&lt;br&gt;	   &amp;lt;/property&amp;gt;&lt;br&gt;	 &amp;lt;/bean&amp;gt;&lt;br&gt;	 &amp;lt;!-- COMPASS END --&amp;gt;&lt;br&gt;	&amp;lt;!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) --&amp;gt;&lt;br&gt;	&amp;lt;bean id=&amp;quot;transactionManager&amp;quot; class=&amp;quot;org.springframework.orm.hibernate3.HibernateTransactionManager&amp;quot;&amp;gt;&lt;br&gt;		&amp;lt;property name=&amp;quot;sessionFactory&amp;quot;&amp;gt;&amp;lt;ref local=&amp;quot;sessionFactory&amp;quot;/&amp;gt;&amp;lt;/property&amp;gt;&lt;br&gt;	&amp;lt;/bean&amp;gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;lt;!----------------------------一下是对anototion的配置。--&amp;gt;&lt;br&gt;    &amp;lt;bean id=&amp;quot;annotationConfiguration&amp;quot;&lt;br&gt;          class=&amp;quot;org.compass.annotations.config.CompassAnnotationsConfiguration&amp;quot;&amp;gt;&lt;br&gt;    &amp;lt;/bean&amp;gt;&lt;br&gt;&lt;br&gt;    &amp;lt;!-- 核心Compass Bean,search及index时使用 --&amp;gt;&lt;br&gt;    &amp;lt;bean id=&amp;quot;compass&amp;quot; class=&amp;quot;org.compass.spring.LocalCompassBean&amp;quot;&amp;gt;&lt;br&gt;        &amp;lt;!-- anontaition式设置 	--&amp;gt;&lt;br&gt;        &amp;lt;property name=&amp;quot;classMappings&amp;quot;&amp;gt;&lt;br&gt;            &amp;lt;list&amp;gt;&lt;br&gt;                &amp;lt;value&amp;gt;com.dengyin.compass.sample.domain.Book&amp;lt;/value&amp;gt;&lt;br&gt;            &amp;lt;/list&amp;gt;&lt;br&gt;        &amp;lt;/property&amp;gt;&lt;br&gt;&lt;br&gt;        &amp;lt;property name=&amp;quot;compassConfiguration&amp;quot; ref=&amp;quot;annotationConfiguration&amp;quot;/&amp;gt;&lt;br&gt;&lt;br&gt;        &amp;lt;!-- xml 文件式设置&lt;br&gt;			&amp;lt;property name=&amp;quot;resourceLocations&amp;quot;&amp;gt;&lt;br&gt;			&amp;lt;list&amp;gt;&lt;br&gt;			&amp;lt;value&amp;gt;classpath:compass-springside.cmd.xml&amp;lt;/value&amp;gt;&lt;br&gt;			&amp;lt;value&amp;gt;classpath:compass-springside.cpm.xml&amp;lt;/value&amp;gt;&lt;br&gt;			&amp;lt;/list&amp;gt;&lt;br&gt;			&amp;lt;/property&amp;gt;&lt;br&gt;		--&amp;gt;&lt;br&gt;        &amp;lt;property name=&amp;quot;compassSettings&amp;quot;&amp;gt;&lt;br&gt;            &amp;lt;props&amp;gt;&lt;br&gt;                &amp;lt;prop key=&amp;quot;compass.engine.connection&amp;quot;&amp;gt;&lt;br&gt;                    file://${user.home}/springside/compass&lt;br&gt;                &amp;lt;/prop&amp;gt;&lt;br&gt;                &amp;lt;prop key=&amp;quot;compass.transaction.factory&amp;quot;&amp;gt;&lt;br&gt;                    org.compass.spring.transaction.SpringSyncTransactionFactory&lt;br&gt;                &amp;lt;/prop&amp;gt;&lt;br&gt;            &amp;lt;/props&amp;gt;&lt;br&gt;        &amp;lt;/property&amp;gt;&lt;br&gt;&lt;br&gt;        &amp;lt;property name=&amp;quot;transactionManager&amp;quot; ref=&amp;quot;transactionManager&amp;quot;/&amp;gt;&lt;br&gt;    &amp;lt;/bean&amp;gt;&lt;br&gt;&lt;br&gt;    &amp;lt;!--Compass的GPS绑定,在index时使用--&amp;gt;&lt;br&gt;    &amp;lt;bean id=&amp;quot;compassGps&amp;quot; class=&amp;quot;org.compass.gps.impl.SingleCompassGps&amp;quot;&lt;br&gt;          init-method=&amp;quot;start&amp;quot; destroy-method=&amp;quot;stop&amp;quot;&amp;gt;&lt;br&gt;        &amp;lt;property name=&amp;quot;compass&amp;quot; ref=&amp;quot;compass&amp;quot;/&amp;gt;&lt;br&gt;        &amp;lt;property name=&amp;quot;gpsDevices&amp;quot;&amp;gt;&lt;br&gt;            &amp;lt;list&amp;gt;&lt;br&gt;                &amp;lt;bean class=&amp;quot;org.compass.spring.device.hibernate.SpringHibernate3GpsDevice&amp;quot;&amp;gt;&lt;br&gt;                    &amp;lt;property name=&amp;quot;name&amp;quot;&amp;gt;&lt;br&gt;                        &amp;lt;value&amp;gt;hibernateDevice&amp;lt;/value&amp;gt;&lt;br&gt;                    &amp;lt;/property&amp;gt;&lt;br&gt;                    &amp;lt;property name=&amp;quot;sessionFactory&amp;quot; ref=&amp;quot;sessionFactory&amp;quot;/&amp;gt;&lt;br&gt;                &amp;lt;/bean&amp;gt;&lt;br&gt;            &amp;lt;/list&amp;gt;&lt;br&gt;        &amp;lt;/property&amp;gt;&lt;br&gt;    &amp;lt;/bean&amp;gt;&lt;br&gt;&lt;br&gt;ok! 相信你对Compass有一定的了解了。 thanks&lt;br&gt;&lt;br&gt;Compass：    http://www.opensymphony.com/compass/&lt;br&gt;Compass文档：http://www.opensymphony.com/compass/content/documentation.html&lt;br&gt;&lt;br&gt;trac:http://www.writely.com/View.aspx?docid=ajgd3tgv958v_0fmhxk9&lt;br&gt;&lt;/pre&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-5815636772130029849&amp;page=RSS%3a+Compass%e8%af%bb%e6%96%87%e6%a1%a3%e7%ac%94%e8%ae%b0&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=dengyin2000.spaces.live.com&amp;amp;GT1=dengyin2000"&gt;</description><comments>http://dengyin2000.spaces.live.com/Blog/cns!AF4AB52B167D7EE7!206.entry#comment</comments><guid isPermaLink="true">http://dengyin2000.spaces.live.com/Blog/cns!AF4AB52B167D7EE7!206.entry</guid><pubDate>Fri, 07 Jul 2006 07:10:08 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://dengyin2000.spaces.live.com/blog/cns!AF4AB52B167D7EE7!206/comments/feed.rss</wfw:commentRss><wfw:comment>http://dengyin2000.spaces.live.com/Blog/cns!AF4AB52B167D7EE7!206.entry#comment</wfw:comment><dcterms:modified>2006-07-07T07:12:22Z</dcterms:modified></item></channel></rss>