`

《compass-reference》翻译计划之:6.1 OSEM介绍 6.2 检索类

阅读更多

6 OSEM – 对象/搜索引擎映射

6.1    介绍

Compass提供了把Java对象映射到搜索引擎中的功能,这是通过XML映射文件和Java5.0Annotations来实现的。我们把这个技术称为OSEM(对象搜索引擎映射)。OSEM提供了一个非常丰富的语法来描述对象的属性和关系。通过CompassOSEM文件/annotations从运行期的对象模型中抽象出需要的属性,然后把它们对应的元数据插入到搜索引擎索引中。

 

保存一个对象到搜索引擎的过程称为marshaling(列集),而从搜索引擎中检索一个对象的过程称为un-marshaling。正如5.2“Alias, Resource and Property”中的描述,在搜索引擎的实现中,Compass使用了ResourcesOSEMmarshalingun-marshaling一个对象树到Resource的过程(简单的说,一个Resource就是一个映射)。

 

 

6.2    检索类   

检索类是描述应用状态的类,它实现了业务模型的实体。Compass最适合POJO模式编程。现在,我们来看一个检索类的实例:

 

import java.util.Date;
import java.util.Set;

@Searchable
@SearchableConstant(name = "type", values = { "person", "author" })
public class Author {
	private Long id; // identifier

	private String name;

	private Date birthday;

	@SearchableId
	public Long getId() {
		return this.id;
	}

	private void setId(Long id) {
		this.id = id;
	}

	@SearchableProperty(name = "name")
	@SearchableMetaData(name = "authorName")
	public String getName() {
		return this.name;
	}

	public void setName(String name) {
		this.name = name;
	}

	@SearchableProperty(format = "yyyy-MM-dd")
	public Date getBirthday() {
		return this.birtday;
	}

	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
}

 

 

 

 

Author类采用Java5annotations方式来进行映射。接下来,我们再看一个采用XML映射的例子:

<?xml version="1.0"?>
<!DOCTYPE compass-core-mapping PUBLIC
"-//Compass/Compass Core Mapping DTD 2.0//EN"
"http://www.compass-project.org/dtd/compass-core-mapping-2.0.dtd">
<compass-core-mapping package="eg">
	<class name="Author" alias="author">
		<id name="id" />
		<constant>
			<meta-data>type</meta-data>
			<meta-data-value>person</meta-data-value>
			<meta-data-value>author</meta-data-value>
		</constant>
		<property name="name">
			<meta-data>name</meta-data>
			<meta-data>authorName</meta-data>
		</property>
		<property name="birthday">
			<meta-data format="yyyy-MM-dd">birthday</meta-data>
		</property>
	</class>
</compass-core-mapping>

 

 

 Compass使用的应用对象是非侵入式,它必须具有以下规则:

l         实现一个默认的构造方法:Author有一个隐藏的(无参)构造方法。所有的持久类都必须有一个默认的构造方法。Compass Core中使用Constructor.newInstance()来构造实例。

l         提供属性标识符:在OSEM中,每个root级的检索类必须定义一个或多个属性来标识该类。

l         访问说明和变更(可选):虽然Compass能直接持久化实例变量,但Compass不推荐你这么做。Compass更认可JavaBean风格的实现方式。这种方式更清晰明了。

l         如果你想混用持久类中的对象(例如在一个Setadd不同的持久类),那么建议你重载equals() hashCode()。你能通过这些对象之间的标识符来实现这种混用,但得注意:使用代理标识符能使Compass工作得最好(将提供一个方法来自动生成它们)。因此,使用业务键来实现是最好的。

 

在上面的例子中,我们为Author类定义了映射。从中引入了Compass的映射概念和语法。在解释概念之前,弄清楚一些相关术语是很有必要的。

 

首先要明确的是Property的用法。因为Property作为一个javaCompass的概念(从表示搜索引擎和语义术语来看),它有共同的用法——特别注意的是其所带前缀的含义。一个类的property指的是一个Java类的属性。在Compass中,一个资源的property指的是搜索引擎元数据,它包含了这个映射类的property值。在前面的OSEM例子中,类property:“name”的值所映射的包含了两个资源property实例:nameauthorname

 

6.2.1   别名

 

Compass中,每个映射定义都得注册一个别名。这个别名用于连接一个类和它的OSEM定义。在其他映射定义和直接使用Compass API时,别名也能被引用。当使用annotations映射时,别名就是该类的小写类名。

 

6.2.2   Root

Compass中,检索类有两种类型:root级和非root级。当一个类需要被单独搜索时,该类最好定义成Root级检索类。例如:在Customer类中,包含一个Name类,Customer能被单独查询,而Name仅仅是Customer中的一部分,所以Customer被定义成root级检索类,而Name被定义成非root级检索类(在配置文件中root=”false”)。另外一种考虑root级检索类的方式:最终编组到自己的资源的检索类。

 

root级检索类不需要定义id映射。

 

6.2.3   子索引

默认情况下,每个root级的检索类都有其自身并以别名命名的子索引。子索引名是可控的。允许把几个root级的检索类加入到同一个子索引中。也可以在同一个子索引中使用不同的子索引散列函数。想了解更多内容,请阅读:5.8:子索引散列。

 

-----------------------------------------------------------------------------------------

 

 

注:“《compass-reference》翻译计划”

 

 

3
0
分享到:
评论

相关推荐

    compass-reference.pdf

    此文档为 Compass 2.1.0 版本的参考手册,详细介绍了如何配置和使用 Compass 进行搜索和索引操作。 #### 使用指南 - **Lucene**:Compass 基于 Lucene 构建,因此了解 Lucene 的基础知识对于使用 Compass 至关重要...

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

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

    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-compass-1.27.1-win32-x64.zip

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

    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.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格式查看和编辑数据,...

    基于GitHub等平台的Compass-CI开源持续集成软件设计源码

    该项目是Compass-CI开源持续集成软件的设计源码,集成了Ruby、Shell、Python、HTML...Compass-CI为开发者提供对GitHub、Gitee、Gitlab等平台开源软件的测试、登录、故障诊断和分析服务,旨在提高软件开发和维护的效率。

    compass-core.jar

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

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

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

    Compass全文检索系列之一:Compass入门

    Compass全文检索系列之一:Compass入门 在IT领域,全文检索已经成为数据分析和信息检索的重要技术,尤其是在大数据时代。本文将介绍Compass,一个基于Lucene的全文搜索引擎库,为Java开发者提供了一种简单易用的...

    前端开源库-compass-mixins

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

    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-2.2.0.zip

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

    Compass-master.zip

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

Global site tag (gtag.js) - Google Analytics