|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2007-11-21
Compass是建立在Lucene基础之上的一款开放源码的JAVA搜索引擎框架。关于Compass的介绍在此我不多讲了,更多了解请直接参考http://www.opensymphony.com/compass。
很多看了Compass的人多少对Compass的配置文件都有点云里雾里的感觉(我最开始也如此:P)。由于Compass有很多地方都借鉴了Hibernate的思想,在此我结合Hibernate中的思想来帮助我们对Compass的配置文件进行理解。 Hibernate是一个O/R Mapping工具,它可以将实体对象和数据库中的表进行映射。最终通过访问实体对象来达到访问数据库的目的。 Compass是一个搜索引擎框架,它可以将common meta data与实体对象进行映射。最终通过访问common meta data来达到访问对象的目的。 综上所述,Hibernate是对象到数据库。而Compass是common meta data 到对象。 Compass的配置文件主要分成三类: 第一类:*.cmd.xml文件 *.cmd.xml文件是对common meta data进行定义,我们就可以把它是当作Hibernate中的POJO来理解。里面定义了最终搜索的结果中的最基本的元数据。下面是一个*.cmd.xml文件的片断: <compass-core-meta-data> <meta-data-group id="petclinic" displayName="Petclinic Meta Data"> <description>Petclinic Meta Data</description> <uri>http://compass/sample/petclinic</uri> <alias id="vet" displayName="Vet"> <description>Vet alias</description> <uri>http://compass/sample/petclinic/alias/vet</uri> <name>vet</name> </alias> ………… <meta-data id="petType" displayName="Pet Type"> <description>The type of a pet</description> <uri>http://compass/sample/petclinic/petType</uri> <name>petType</name> </meta-data> </meta-data-group> </compass-core-meta-data> 在这里 <meta-data-group id="petclinic" displayName="Petclinic Meta Data"> 可当作是POJO的package来理解,petclinic可以看成是package name。 <alias id="vet" displayName="Vet"> 可当作是POJO的Class来理解,vet 可以看成是class name。 <meta-data id="petType" displayName="Pet Type">可当作是POJO的property来理解,petType可以看成是property name。 上面xml中所定义的meta data 和alias就是compass需要查询的所有的基本元素组件。 然而common meta data的定义与POJO所不同的是:POJO是用java代码来体现,而common meta data使用xml来体现。POJO的class中定义了property,common meta data中的alias和meta-data是分开定义。 当然上面都是一个类比而已, 其目的是为了便于让我们理解,实际生成的代码并非如上所述的一一对应。compass提供了一个ant task可以将common meta data生成一个class。代码片断如下: public final class Petclinic { /** * Petclinic Meta Data */ public static final class Group { public static final String Id = "petclinic"; public static final String DispayName = "Petclinic Meta Data"; public static final String Uri = "http://compass/sample/petclinic"; } public static final class Alias { /** * Owner alias */ public static final class Owner { public static final String Id = "owner"; public static final String Name = "owner"; public static final String DisplayName = "Owner"; public static final String Uri = "http://compass/sample/petclinic/alias/owner"; public static final String GroupId = "petclinic"; } } …… } 第二类:*.cpm.xml文件 *.cpm.xml就是Object/Search Engine Mapping了。 我们也可以拿她当作同Hibernate中的*.hbm.xml来理解。他的作用就是提供了POJO到common meta data的映射。下面是一个*.cpm.xml文件的片断: <compass-core-mapping package="org.compass.sample.petclinic"> <contract alias=span声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。 |
|
| 返回顶楼 | |
|
最后更新时间:2007-11-22
正需要非常感谢
|
|
| 返回顶楼 | |
浏览 786 次



