Compass学习之三:附带Library例子的分析(一)
顾名思义,Library例子主要展现的是图书馆中的图书信息的检索。
序号
文件类型
文件列表
备注
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级的检索类必须实现的接口。
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>
序号
类名
描述
备注
1
Book
书
实现Identifiable接口
2
Article
文章
?
3
Author
作者
实现Identifiable接口
???
??? 3个检索类中,两个都实现了Identifiable接口。该接口很简单:
public interface Identifiable {
??? Long getId();
}
??? 这说明了什么呢?
??? 有了Id,即有一个证明,能被单独搜索到。Article是不应该被独立搜索到的,当系统检索到一个Article的时候,被返回的总是与之相关的Author对象,而非Article对象本身。这一点在实体的配置文件中得以充分体现。
??? 用Compass官方的语言来说,Book和Author是root级的检索类,而Article是非root级的检索类。
序号
配置文件名
描述
备注
1
Book.cpm.xml
书
?
2
Article.cpm.xml
文章
?
3
Author.cpm.xml
作者
?
?
???? Compass的映射方式有以下三种:
??????? 1、RSEM(Resource/SearchEngine Mapping)
2、OSEM(Object/Search Engine Mapping)
3、XSEM(Xml/Search Engine Mapping)
本例中使用的是OSEM。具体的内容参见《compass-reference》。