`

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

阅读更多
2.2.1.2.3.1       Book.cpm.xml

映射文件中元素分析:

 

1、  类别名

l         每个检索类在通用元数据定义文件中都应该有对应描述。

<class name="Book" alias="${library.book}">

alias属性所对应的值起到了一个映射作用。它将一个实体与这个实体的元数据定义连接起来。该元数据定义在.cmd.xml文件中。

library.cmd.xml文件中对应的:

<alias id="book" displayName="Book">

            <description>Book alias</description>

            <uri>http://compass/sample/library/alias/book</uri>

            <name>book</name>

</alias>

     很显然,其中使用了3个元数据来定义这个检索类。它们分别是<description><uri><name>

 

2<id name="id" />

每一个root级的检索类至少有一个索引id。可以用annotationxml配置的方式注册该索引id。如果没有注册,compass会默认给一个内部id

 

3property

<property name="keywords">

         <meta-data boost="2">${library.keyword}</meta-data>

 </property>

l         Property对应检索类中的域。

l         每个索引域在通用元数据定义文件中都应该有对应的别名。

其中meta-data中的boost=2是指多重引导关系(= bootstrap)。

2.2.1.2.3.2       Author.cpm.xml

1<constant>

    <constant>可以构建索引常量。可以在类中用annotation的方式注入,也可以在xml文件中定义。

索引常量的xml定义方式:在一个索引实体的映射文件中通过<constant>定义一个常量名,并用一列值与之对应。

<constant>

            <meta-data>${library.type}</meta-data>

            <meta-data-value>${library.type.mdPerson}</meta-data-value>

            <meta-data-value>${library.type.mdAuthor}</meta-data-value>

        </constant>

结合通用元数据定义文件,我们可以翻译一下,结果如下:

<constant>

            <meta-data>type</meta-data>

            <meta-data-value>person</meta-data-value>

            <meta-data-value>author</meta-data-value>

        </constant>

    由此可以得到一个索引常量元数据:type,它有2个对应的值:personauthor

 

2<component><reference>

<component name="name" ref-alias="${library.article}" />

该类中定义了三个与Author关联的类或者由类组成List

private Name name;

private List articles = new ArrayList();

private List books = new ArrayList();

其中Article属于非root型的检索类,而Name是属于辅助类,所以它们跟Author之间的关系都是:component。而Bookroot型的检索类,它跟Author之间的关系只能是:reference

    不能单独搜索ArticleName,必须通过Author来调用它们。

 

注:很明显该映射文件的以下部分设置有误:

<component name="name" ref-alias="${library.name.md}" />

应该改成:<component name="name" ref-alias="${library.name}" />

至于为什么配置错了还不影响结果,没有仔细看其源代码,所以不得知。有人明白其中道理的,不妨一说,愿洗耳恭听:)

 

2.2.1.2.3.3       Article.cpm.xml

1<class>

<class name="Article" alias="${library.article}" root="false">

其中root="false"的含义:

 

     root属性是用于标识该实体是否为一个可以被独立查找的检索实体。当该属性的值为true时,用户可以直接通过关键字的查找来得到这样的实体信息;若该属性的值为false,用户使用相同的关键字进行搜索,只能得到该实体所依附的真正实体的实体。这时,需要再通过该真正实体的实例,进一步获取所需要的实体。

 

     本例来看,用户可以通过输入关键字在Compass进行查找,最终找到AuthorBook这样的实体对象,却不可以直接得到Article这个对象。因为Articleroot属性为false。如果需要取得Article的实例,则只能先取得Author的实例,进而通过Author中的articleList,来获取Article的对象。

     <class>root属性默认为true

2.2.1.2.4       通用元数据定义文件

1、概述

Library.cmd.xml文件中的cmdCommon Metadata Definition的缩写。其中,元数据是用于描述数据的数据。在该文件中,存储了一些与实体相关的元数据信息。同时,在*.cpm.xml文件中,所有被使用到的变量都在这里有明确的定义。即那些通过${library.*}调用的。

 

    2uri

        在该定义文件中<meta-data>uri是可以重复的,例如以下2个定的uri是相同的:

        <alias id="name" displayName="Name">

            <description>Name alias</description>

            <uri>http://compass/sample/library/alias/name</uri>

            <name>name</name>

        </alias>

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

        <meta-data id="isbn" displayName="ISBN">

            <description>ISBN of the book</description>

            <uri>http://compass/sample/library/name</uri>

            <name>name</name>

        </meta-data>

 

2.2.1.2.5        测试类

    通过测试类,我们可以了解Compass索引建立和检索的全过程。

 

对于test*()方法我们就不作主要关注,那些都是单元测试的方法。不过,这也算是提供了写compass应用时的单元测试范例。

我们从main方法进入,看看compass运行的过程:

 

 

分享到:
评论

相关推荐

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

    在实际应用中,我们可以按照以下步骤来使用Compass: 1. **安装与依赖**:将Compass库添加到项目中,根据所使用的ORM框架选择相应的版本。 2. **配置ORM集成**:配置Compass与ORM框架的连接,指定数据源和索引存储...

    Compass原理深入学习笔记

    【Compass原理深入学习笔记】 Compass是一款基于Apache Lucene的全文搜索引擎框架,它为开发者提供了更高级别的抽象层,简化了搜索引擎的集成工作。在理解Compass之前,我们需要先了解全文检索的基本概念和原理。 ...

    Compass简单学习

    【标题】"Compass简单学习"所涉及的知识点主要集中在两个方面:一是对Compass工具的理解,二是如何使用Compass进行源码分析和开发辅助。Compass是一个强大的样式表(CSS)编译器,它基于Sass语言,帮助开发者更高效...

    compass2简单例子

    通过这个 "compass2简单例子",你可以学习如何创建一个新的 Compass 项目,编辑 `config.rb` 文件,编写 Sass 代码,然后使用 Compass 命令编译成 CSS。同时,你还可以看到 Compass 如何简化 CSS 开发,特别是通过其...

    Lucene+compass学习资料

    《深入探索Lucene+Compass技术与Ajax应用》 在当今的互联网开发中,数据检索和实时交互性已经成为不可或缺的功能。Lucene作为一个强大的全文搜索引擎库,为开发者提供了高效的文本搜索能力;Compass作为Lucene的一...

    compass学习笔记

    Compass概念: 1:Compass相当于hb的SessionFactory 2:CompassSession相当于hb的Session 3:CompassTransaction相当于hb的transaction。 &lt;br&gt;Compass也是采用CompassConfiguration(装载配置和映射文件...

    Compass技术文档

    Compass基于Lucene之上,类似于Hibernate之于JDBC的关系,提供了更高层次的封装,使得开发者能够更容易地集成搜索引擎到Java应用程序中。 - **OSEM**:OSEM (Object Search Engine Mapping) 是Compass提供的一个...

    compass 全文搜索

    Compass全文搜索是一个基于Apache Lucene的高性能、易用的全文搜索引擎工具。Lucene是Java开发的开源库,它提供了文本分析、索引和搜索的基本功能。而Compass则在Lucene的基础上进行了封装,使得开发者可以更方便地...

    完整compass工程+建库sql+学习资料

    通过查阅这两个文件,你可以深入理解Lucene的索引和搜索机制,以及Compass是如何在Lucene之上提供更高级别的抽象和便利的。 总的来说,这个压缩包是一个全面的Compass和Lucene学习资源,不仅提供了实践项目,还有...

    compass完整可用项目

    3. **jar包**:项目依赖的各种库,包括Compass、Lucene、SSH框架和其他必需的第三方库。 4. **SQL脚本**:用于初始化数据库的脚本,可能是数据表结构或初始数据的导入。 5. **Web应用目录**:可能包含WEB-INF目录,...

    Compass学习文档1

    Compass 是一个强大的开源搜索引擎框架,它建立在 Lucene 的基础之上,为 Java 开发者提供了更为简洁的搜索引擎 API。Compass 的设计目标是简化搜索引擎的集成,使其能够无缝地与现有的应用程序,如 Hibernate 和 ...

    compass_使用详解.pdf compass_教程 compass_试用案例

    #### 二、Compass 与 Lucene 和 Hibernate 的关系 ##### 2.1 Lucene 简介 - **Lucene** 是一个高性能的全文检索引擎库,支持文本索引和查询。 - **优点**:灵活高效,适用于大量数据的全文检索。 - **缺点**:直接...

    compass和wellplan学习总结.pdf

    Compass和WellPlan学习总结 Compass和WellPlan是油气行业中的两个重要工具,用于油气井的设计、规划和实施。下面是Compass和WellPlan学习总结的知识点: 1. 井设计基本概念:井设计是油气井的核心部分,涉及到井的...

    compass内部分享

    ### Compass与Lucene知识点详解 #### Lucene简介 **Lucene**是一款优秀的、成熟的、开源的、纯Java语言编写的全文检索工具包。它提供了一种高性能的方式来进行文本的索引和搜索,使得开发者能够在应用中轻松实现...

    指南针Compass

    虽然Compass主要用于Web开发,但考虑到跨平台的趋势,也可能有开发者尝试将其理念和方法应用到Android UI的设计中,通过自定义视图或第三方库实现类似的功能。 Compass的另一个重要特性是其对浏览器兼容性的处理。...

    mongodb安装包和compass

    在Node.js学习过程中,MongoDB和Compass的结合使用可以帮助你更好地理解和操作数据库。通过Node.js的MongoDB驱动,你可以编写JavaScript代码来与MongoDB交互,创建和查询集合,执行CRUD(创建、读取、更新、删除)...

    mongodb compass1.15.1官网版 免安装直接使用

    MongoDB Compass是MongoDB官方提供的一款图形化管理工具,它为MongoDB数据库的使用者提供了直观的界面,方便进行数据浏览、查询、操作以及性能分析。MongoDB Compass 1.15.1是这个系列的一个版本,它无需安装,可以...

    compass的几个入门网页

    对于初学者,可以从以下方面开始学习Compass: 1. 熟悉Sass基础语法,包括变量、嵌套规则、混合、函数等。 2. 学习Compass的核心概念,如网格系统、样式库和混入。 3. 实践创建简单项目,应用Compass的功能来编写...

Global site tag (gtag.js) - Google Analytics