6.3 检索类映射
6.3.1 检索ID和检索元数据
每个root级的检索类至少定义1个检索ID。检索ID用于唯一识别该对象。用户能定义多个检索ID,也能把类当作一个检索ID(必须注册自己的转换器或者使用检索ID组件映射)。
一般来说,检索ID是不需要作为一个检索元数据来定义。如果用户没有定义检索ID,Compass将创建一个内部的元数据id(解析之后)——通常,基于代理id的文本搜索是不需要明确定义的。如果检索ID不必被搜索,那么必须为它定义一个检索元数据。当采用XML映射方式时,可以为检索ID定义1个或多个属性。当采用annotations时,有三个选项:第一是为检索ID提供一个name,第二是增加一个SearchableMetaData,最后是SearchableMetaDatas(为多个元数据)。当然,这三个选项是能组合使用的。Compass为了减少annotations的数量(避免 annotation “地狱”),使用了这样一个机制:一旦提供了name,检索ID将自动创建一个SearchableMetaData。
这里有一个使用annotations定义检索ID的例子。这个例子没有创建任何显式的元数据。
@Searchable
public class Author {
@SearchableId
private Long id;
// ...
}
对于同一个映射,我们来看一下使用XML方式的定义:
<class name="Author" alias="author">
<id name="id" />
<!-- ... -->
</class>
接下来我们来看另一个例子——效果同前2个例子,此时显示定义了一个元数据:id:
@Searchable
public class Author {
@SearchableId(name = "id")
private Long id;
// ...
}
下面是采用SearchableMetaData达到同样效果的定义:
@Searchable
public class Author {
@SearchableId
@SearchableMetaData(name = "id")
private Long id;
// ...
}
同样效果的XML定义版本:
<class name="Author" alias="author">
<id name="id">
<meta-data>id</meta-data>
</id>
<!-- ... -->
</class>
6.3.2 检索ID组件
一个检索ID组件表示一个合成对象,即一个id对象。除了它是作为该类的id外,它的使用方式与其它检索组件是相似的。接下来我们看一个使用annotations定义检索ID组件的例子(注意:在这个例子中,B不是一个root级的检索类,这里需要定义ids)。
@Searchable
public class A {
@SearchableIdComponent
private B b;
// ...
}
@Searchable(root = false)
public class B {
@SearchableId
private long id1;
@SearchableId
private long id2;
}
同样效果的XML展现方式:
<class name="A" alias="a">
<id-component name="b" />
<!-- ... -->
</class>
<class name="B" alias="b" root="false">
<id name="id1" />
<id name="id2" />
</class>
6.3.3 检索Parent
检索Parent映射对组件提供了循环映射的支持(尽管方向组件映射也被支持)。如果组件类想映射成包装类,那么父映射就能被用于映射它。父映射将不散列(数据持久化到搜索引擎中)父对象,当从搜索引擎中加载父对象时,只是初始化它。
下面是一个例子:使用annotations定义了一个检索组件和检索Parent(注意:在这个例子中,B不是一个root级的检索类,这里不需要定义ids)。
@Searchable
public class A {
@SearchableId
private Long id;
@SearchableComponent
private B b;
// ...
}
@Searchable(root = false)
public class B {
@SearchableParent
private A a;
// ...
}
同样效果的XML映射定义:
<class name="A" alias="a">
<id name="id" />
<component name="b" />
<!-- ... -->
</class>
<class name="B" alias="b" root="false">
<parent name="a" />
<!-- ... -->
</class>
从简单关联上看,一个检索Property可当作一个类的attribute或者property。检索property映射一个对象的attribute,最终会转成String存放在搜索引擎中。检索的类型包括原类型和包装类型,java.util.Date,java.util.Calendar和Compass中的多种类型都被自动支持(请看类型转换章节相关的内容)。而且,也能使用自定义转换器来支持用户定义的类型。一个检索元数据使用检索Property值(使用它注册的转换器,把它转换成String类型),通过一个名称,把它存储在索引中。
当使用XML映射时,对应一个property映射,可能会定义一个或多个元数据项。当使用annotation时,对应映射类的attribute,必须定义一个SearchableProperty。可以显示地定义一个SearchableMetaData或者SearchableMetaDatas(针对多个元数据)。如果没有定义SearchableMetaData(s),那么一个SearchableProperty将自动创建一个SearchableMetaData。
下面是使用annotations定义一个检索Property的例子。这个例子将根据类的域名自动创建一个同名的检索元数据。
@Searchable
public class Author {
// ...
@SearchableProperty
private String value;
// ...
}
同样效果的另一种表示方式(使用了显示的SearchableMetaData):
@Searchable
public class Author {
// ...
@SearchableProperty
@SearchableMetaData(name = "value")
private String value;
// ...
}
同样效果的XML映射定义:
<class name="Author" alias="author">
<! ... -->
<property name="value">
<meta-data>value</meta-data>
</property>
<!-- ... -->
</class>
注:“《compass-reference》翻译计划”
分享到:
相关推荐
compass-reference.pdf
compass-reference,compass
mongodb-windows安装包: mongodb-compass-1.31.2-win32-x64.msi 打开直接安装
mongodb官方客户端可视化工具compass-1.26.1-win32-x64
mongodb-compass-community-1.21.2-win32-x64.exe mongodb-compass-community-1.21.2-win32-x64.exe mongodb-compass-community-1.21.2-win32-x64.exe mongodb-compass-community-1.21.2-win32-x64.exe
MongoDB的讲义,资源包。与大数据hadoop学习相关,包含快速入手MongoDB和MongoDB集群安全两个部分,以及mongoDB的可视化工具zip包MongoDB-compass
mongodb-compass-community-1.18.0-win32-x64.msi
前端开源库-compass-mixins指南针混音器,指南针样式表
最新版mongodb-compass-1.16.3-win32-x64
mongodb-compass-1.23.0-win32-x64.zip官网下载的mongodb界面管理工具
compass-2.2.0.zip,Compass是第一个实现java搜索引擎的开源框架,它是基于Lucene之上的,提供更简单的搜索引擎API,事务支持,对象到搜索引擎映射
Compass需要的包3:compass-core.jar
这个是mongodb-compass的1.23最新版本。花了我好长时间才下载完。各位请给我个赞 这个是mongodb-compass的1.23最新版本。花了我好长时间才下载完。各位请给我个赞 这个是mongodb-compass的1.23最新版本。花了我好长...
一般的方法是通过gem进行安装,而gem又依赖于Ruby环境,所以要先安装Ruby,然后安装sass和compass,compass的gem安装包下载
安装mongodb时会自动联网下载mongodb-compass,但是网速非常慢,有些人甚至等了一晚上都没有结果。可以选择在安装mongodb时先不安装mongodb-compass,事后单独安装。
MongoDB Compass是数据库MongoDB下的一款可视化操作工具,可以帮助我们更轻松的创建和管理数据库。
mongodb-compass-1.17.0-win32-x64 MongoDB可视化工具Compass
mongdb compass安装工具 64位 msi格式