Compass学习之三:附带Library例子的分析(一)

本文解析了Compass Library示例项目,介绍了项目的文件构成及配置细节。重点分析了Compass配置文件、检索类及其映射文件等内容,并解释了root级与非root级检索类的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:因javaeye的每页显示有限制,所以只能分成3页来发布了。

2.2.1 Library的分析

顾名思义,Library例子主要展现的是图书馆中的图书信息的检索。

2.2.1.1 项目文件基本构成

序号

文件类型

文件列表

备注

1

Compass的配置文件

compass.cfg.xml

 

2

检索类

Article.java

Author.java

Book.java

 

3

检索类映射文件

Article.cpm.xml

Author.cpm.xml

Book.cpm.xml

 

4

通用元数据定义文件

Library.cmd.xml

 

5

测试类

LibraryTests.java

 

6

其他类

Name.java

Identifiable.java

Name作为Author的辅助类。

Identifiable提供一个getId()方法。作为root级的检索类必须实现的接口。

2.2.1.2 项目文件分析
2.2.1.2.1        Compass的配置文件

Compass的配置文件是compass.cfg.xml。对于熟悉hibernate的人来说,compass的配置文件的组成结构极为熟悉,简直跟hibernate的配置文件是双胞胎。

以下是Library的配置内容:

 

 <compass>   

    //表示索引的路径:\library\target\index\

    <setting name="compass.engine.connection">target/index</setting>

//通用的元数据定义文件。

    <meta-data resource="org/compass/sample/library/library.cmd.xml" />   </compass>

2.2.1.2.2        检索

序号

类名

描述

备注

1

Book

实现Identifiable接口

2

Article

文章

 

3

Author

作者

实现Identifiable接口

   

    3个检索类中,两个都实现了Identifiable接口。该接口很简单:

public interface Identifiable {

    Long getId();

}

    这说明了什么呢?

    有了Id,即有一个证明,能被单独搜索到。Article是不应该被独立搜索到的,当系统检索到一个Article的时候,被返回的总是与之相关的Author对象,而非Article对象本身。这一点在实体的配置文件中得以充分体现。

    用Compass官方的语言来说,Book和Authorroot级的检索类,而Article是非root级的检索类。

2.2.1.2.3        检索类映射文件

序号

配置文件名

描述

备注

1

Book.cpm.xml

 

2

Article.cpm.xml

文章

 

3

Author.cpm.xml

作者

 

 

     Compass的映射方式有以下三种:

        1、RSEMResource/SearchEngine Mapping

2、OSEM(Object/Search Engine Mapping)

3、XSEM(Xml/Search Engine Mapping)

本例中使用的是OSEM。具体的内容参见《compass-reference》。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值