`

《compass-reference》翻译计划之6.3 检索类映射(一)

阅读更多

 

6.3   检索类映射

6.3.1   检索ID和检索元数据

每个root级的检索类至少定义1个检索ID。检索ID用于唯一识别该对象。用户能定义多个检索ID,也能把类当作一个检索ID(必须注册自己的转换器或者使用检索ID组件映射)。

 

一般来说,检索ID是不需要作为一个检索元数据来定义。如果用户没有定义检索IDCompass将创建一个内部的元数据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>

  

  

 

6.3.4   检索Property和检索元数据

从简单关联上看,一个检索Property可当作一个类的attribute或者property。检索property映射一个对象的attribute,最终会转成String存放在搜索引擎中。检索的类型包括原类型和包装类型,java.util.Date,java.util.CalendarCompass中的多种类型都被自动支持(请看类型转换章节相关的内容)。而且,也能使用自定义转换器来支持用户定义的类型。一个检索元数据使用检索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》翻译计划”

 

 

 

 

 

4
0
分享到:
评论

相关推荐

    compass-reference

    compass-reference,compass

    windows版本 mongodb可视化管理mongodb-compass-1.43.0-win32-x64.exe

    mongodb可视化管理mongodb-compass-1.43.0-win32-x64.exe mongodb compass官网下载地址:https://www.mongodb.com/try/download/compass mongodb相关下载地址: mongodb社区版:...

    mongodb-windows安装包: mongodb-compass-1.31.2-win32-x64.msi

    mongodb-windows安装包: mongodb-compass-1.31.2-win32-x64.msi 打开直接安装

    mongodb-compass-community-1.16.4-win32-x64.zip

    在“mongodb-compass-community-1.16.4-win32-x64.zip”这个压缩包中,包含了MongoDB Compass的社区版,它可以帮助用户直观地查看和操作MongoDB数据库。以下是压缩包内各个文件的作用: 1. **snapshot_blob.bin**:...

    mongodb-compass-1.27.1-win32-x64.zip

    "mongodb-compass-1.27.1-win32-x64.zip"是一个针对Windows 64位系统的MongoDB Compass版本的压缩包。 MongoDB Compass的核心功能包括: 1. **数据可视化**:它提供了一个直观的界面来查看和理解数据库的结构,...

    compass-reference.pdf

    域模型允许将实体对象直接映射到索引中,提供了一种面向对象的方式处理数据索引和检索,适用于大多数应用场景。 #### Xml Model XML模型支持将XML文档作为数据源进行索引,适用于需要处理大量结构化或半结构化数据...

    mongodb-compass-1.42.1-win32-x64.exe

    mongodb-compass-1.42.1-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-compass-community-1.21.2-win32-x64.exe mongodb-compass-community-1.21.2-win32-x64.exe

    mongodb官方客户端可视化工具compass-1.26.1-win32-x64

    在这个版本"mongodb官方客户端可视化工具compass-1.26.1-win32-x64"中,我们关注的是Windows 32位和64位系统的版本。 Compass的主要功能包括: 1. 数据浏览:它允许用户以表格、图表或者JSON格式查看和编辑数据,...

    mongodb-compass-community-1.18.0-win32-x64.msi

    mongodb-compass-community-1.18.0-win32-x64.msi

    mongodb-compass-1.23.0-win32-x64.zip

    "mongodb-compass-1.23.0-win32-x64.zip" 是一个针对Windows 32位和64位系统的MongoDB Compass版本的压缩包,用户可以从官方网站下载此版本来安装和使用。 MongoDB Compass的核心功能包括: 1. 数据浏览:提供可视...

    mongodb-compass-1.16.3-win32-x64

    最新版mongodb-compass-1.16.3-win32-x64

    前端开源库-compass-mixins

    Compass Mixins 是一个非常重要的前端开发工具,尤其在 Sass(Syntactically Awesome Style Sheets)环境中,它极大地提升了CSS编写效率和代码复用性。这个开源库为开发者提供了丰富的预定义混合(mixins),帮助...

    compass-core.jar

    Compass需要的包3:compass-core.jar

    compass-2.2.0.zip

    7. **性能优化**:Compass对Lucene进行了优化,例如通过内存映射文件和缓存技术提高检索速度,同时提供索引分片和复制策略,以适应大规模的数据和高并发环境。 8. **多语言支持**:Compass能够处理多种语言的文本,...

    Compass-master.zip

    "Compass-master.zip"提供的资源正是这样一个项目,它不仅能够准确地指示方向,还具备显示气压和海拔高度的功能,这对于户外爱好者或者需要导航的用户来说非常有用。下面我们将深入探讨这款应用的核心知识点。 1. *...

    mongodb-compass-1.23.0-win32-x64.exe

    这个是mongodb-compass的1.23最新版本。花了我好长时间才下载完。各位请给我个赞 这个是mongodb-compass的1.23最新版本。花了我好长时间才下载完。各位请给我个赞 这个是mongodb-compass的1.23最新版本。花了我好长...

    Compass-CI 的 Web 服务器

    Compass-CI(Compass Continuous Integration)是一款用于自动化软件构建和测试的持续集成工具。它旨在简化开发流程,提高团队协作效率,确保代码质量。在本篇中,我们将深入探讨 Compass-CI 的 Web 服务器部分,...

Global site tag (gtag.js) - Google Analytics