Compass学习

Compass学习

本项目使用luence完成商品搜索功能但不直接使用 LuceneAPI而是使用了CompassAPI.   CompassLuceneAPI进行了封装.

 

Compass是一个强大的,事务的,高性能的对象/搜索引擎映射框架(OSEM:object search engine /mapping)与一个Java持久层框架.Compass包括:  

comapss把实体类与文档(object)映射起来,
 * 搜索引擎抽象层(使用Lucene搜索引荐),
 * OSEM (Object/Search Engine Mapping) 支持,
 * 事务管理,
 * 类似于Google的简单关键字查询语言
 * 可扩展与模块化的框架,
 * 简单的API. 

 

记住OSEM这个词就像你理解ORM一样,从今天开始OSEM开始走入你的视野,

OSEM就是类似于Compass采用面向对象方式操作搜索引擎的一种产品.

 

对于Compass的学习,如果你会使用hibernate那么你按照使用hibernate的思路来学习Compass只需要半小时就能学会.

compass api

Compass的使用可类比hibernate的使用

使用hibernate的步骤:

1.设计实体,并且完成实体的映射元数据(有两方式一是使用hbm.xml文件,二是使用注解)

2.使用hibernateAPI完成对实体的增删改查操作.

 

使用Compass的步骤与hibernate极其类似:

1.设计实体,关且完成实体的映射元数据

  hibernate使用注解@Entity,指定实体跟数据库表进行映射.

  而Compass使用@Searchale指明实体跟索引的document进行映射

 

@Searchable  

public class Flight implements Serializable{

private Long id;

//定义该属性为搜索实体的标识属性,默认映射到document中的id字段

@SearchableId

public Long getId() { return id ;}

}

2.使用CompassAPI完成对实体的增删改查操作.

Compass中的实体是与document进行映射,hibernate中的实体是与数据库表进行映射

使用CompassAPI可以使用面向对象的方式操作搜索引擎

使用hibernateAPI可以采用面向对象的试操作数据库表

 

 

 

Compass操作实体的API中常用的类:

1. Compass类相当于hibernate中的SessionFactory用于创建CompassSession,Compass只需要实例化一次,它不是轻量级的.

2. CompassSession相当于hibernate中的session,用于建立会话

3. CompassTransaction相当于hibernate中的Transaction,用于事务操作

 

hibernate可以不使用hibernate.cfg.xml配制文件而使用可编程配制方式.

对于Compass而言也可以不使用compass.cfg.xml配制文件,而使用可编程的配制方式.

 

在使用hibernate时如果使用基于注解的方式,在创建sessionFactory时使用的是AnnotationConfiguration这个类而不是Configuration

对于Compass使用基于注解的方式映射实体,在创建Compass时也要使用相应的CompassAnnotationConfiguration而不是CompassConfiguration

 

 

学习Compass的主要学习的就是实体映射时的注解,操作实体时的API.

<!--EndFragment-->

你可能感兴趣的:(Hibernate,compass)