Compass学习
本项目使用luence完成商品搜索功能, 但不直接使用 Lucene的API而是使用了Compass的API. Compass对Lucene的API进行了封装.
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.使用hibernate的API完成对实体的增删改查操作.
使用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.使用Compass的API完成对实体的增删改查操作.
Compass中的实体是与document进行映射,而hibernate中的实体是与数据库表进行映射
使用Compass的API可以使用面向对象的方式操作搜索引擎
使用hibernate的API可以采用面向对象的试操作数据库表
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-->