Compass配置说明及注意事项

   Compass 是建立在 Lucene 基础之上的一款开放源码的 JAVA 搜索引擎框架。 关于 Compass 的介绍在此我不多讲了,更多了解请直接参考 http://www.opensymphony.com/compass<o:p></o:p>

    很多看了Compass的人多少对Compass的配置文件都有点云里雾里的感觉(我最开始也如此:P)。由于Compass有很多地方都借鉴了Hibernate的思想,在此我结合Hibernate中的思想来帮助我们对Compass的配置文件进行理解。<o:p></o:p>

    Hibernate是一个O/R Mapping工具,它可以将实体对象和数据库中的表进行映射。最终通过访问实体对象来达到访问数据库的目的。<o:p></o:p>

    Compass是一个搜索引擎框架,它可以将common meta data与实体对象进行映射。最终通过访问common meta data来达到访问对象的目的。<o:p></o:p>

    综上所述,Hibernate是对象到数据库。而Compasscommon meta data 到对象。<o:p></o:p>

<o:p> </o:p>

Compass的配置文件主要分成三类:<o:p></o:p>

    第一类:*.cmd.xml文件<o:p></o:p>

    *.cmd.xml文件是对common meta data进行定义,我们就可以把它是当作Hibernate中的POJO来理解。里面定义了最终搜索的结果中的最基本的元数据。下面是一个*.cmd.xml文件的片断:<o:p></o:p>

<compass-core-meta-data><o:p></o:p>

    <meta-data-group id="petclinic" displayName="Petclinic Meta Data">    <o:p></o:p>

        <description>Petclinic Meta Data</description> <o:p></o:p>

        <uri>http://compass/sample/petclinic</uri>        <o:p></o:p>

        <alias id="vet" displayName="Vet"><o:p></o:p>

            <description>Vet alias</description><o:p></o:p>

            <uri>http://compass/sample/petclinic/alias/vet</uri><o:p></o:p>

            <name>vet</name><o:p></o:p>

        </alias><o:p></o:p>

       …………<o:p></o:p>

        <meta-data id="petType" displayName="Pet Type"><o:p></o:p>

            <description>The type of a pet</description><o:p></o:p>

            <uri>http://compass/sample/petclinic/petType</uri><o:p></o:p>

            <name>petType</name><o:p></o:p>

        </meta-data> <o:p></o:p>

    </meta-data-group><o:p></o:p>

</compass-core-meta-data>   <o:p></o:p>

在这里<o:p></o:p>

<meta-data-group id="petclinic" displayName="Petclinic Meta Data">  可当作是POJOpackage来理解,petclinic可以看成是package name<o:p></o:p>

<alias id="vet" displayName="Vet"> 当作是POJOClass来理解,vet 可以看成是class name<o:p></o:p>

<meta-data id="petType" displayName="Pet Type">当作是POJOproperty来理解,petType可以看成是property name

上面xml中所定义的meta data 和alias就是compass需要查询的所有的基本元素组件。

然而common meta data的定义与POJO所不同的是:POJO是用java代码来体现,而common meta data使用xml来体现。POJOclass中定义了propertycommon meta data中的aliasmeta-data是分开定义。<o:p></o:p>

当然上面都是一个类比而已, 其目的是为了便于让我们理解,实际生成的代码并非如上所述的一一对应。compass提供了一个ant task可以将common meta data生成一个class。代码片断如下:<o:p></o:p>

public final class Petclinic {<o:p></o:p>

    /**<o:p></o:p>

     * Petclinic Meta Data<o:p></o:p>

     */<o:p></o:p>

    public static final class Group {<o:p></o:p>

       public static final String Id = "petclinic";<o:p></o:p>

       public static final String DispayName = "Petclinic Meta Data";<o:p></o:p>

       public static final String Uri = "http://compass/sample/petclinic";<o:p></o:p>

    }<o:p></o:p>

    public static final class Alias {<o:p></o:p>

       /**<o:p></o:p>

        * Owner alias<o:p></o:p>

        */<o:p></o:p>

       public static final class Owner {<o:p></o:p>

           public static final String Id = "owner";<o:p></o:p>

           public static final String Name = "owner";<o:p></o:p>

           public static final String DisplayName = "Owner";<o:p></o:p>

           public static final String Uri = "http://compass/sample/petclinic/alias/owner";<o:p></o:p>

           public static final String GroupId = "petclinic";<o:p></o:p>

       }<o:p></o:p>

}<o:p></o:p>

……<o:p></o:p>

}<o:p></o:p>

<o:p> </o:p>

    第二类:*.cpm.xml文件<o:p></o:p>

    *.cpm.xml就是Object/Search Engine Mapping了。 我们也可以拿她当作同Hibernate中的*.hbm.xml来理解。他的作用就是提供了POJOcommon meta data的映射。下面是一个*.cpm.xml文件的片断:<o:p></o:p>

<compass-core-mapping package="org.compass.sample.petclinic"><o:p></o:p>

    <contract alias=

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值