`

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

阅读更多

前言:因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官方的语言来说,BookAuthorroot级的检索类,而Article是非root级的检索类。

2.2.1.2.3        检索类映射文件

序号

配置文件名

描述

备注

1

Book.cpm.xml

 

2

Article.cpm.xml

文章

 

3

Author.cpm.xml

作者

 

 

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

        1RSEMResource/SearchEngine Mapping

2OSEM(Object/Search Engine Mapping)

3XSEM(Xml/Search Engine Mapping)

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

5
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics