传智播客--Compass(汤阳光)

今天还是汤老师教全文检索技术.今天学习的是 Compass.这个框架是对 Lucene 的封装.不过使用上和 Hibernate 却有很多相似的地方.所以,老师今天先领我们复习了一下 Hibernate 的 API 和使用方法.并在讲解 Compass 的时候,进行对比讲解.让我们更容易理解和加深记忆.昨天的 Lucene 学习好了,对全文检索理解了.今天的 Compass 学习起来非常的轻松.使用 Compass 实现全文检索可以大大的提高我们的开发时间.

1. Hibernate 和 Compass 从总体上进行对比.
Hibernate:
是ORM框架,面向对象的操作.提供从对象 到表,从表到对象服务.是对JDBC的一种封装.
通过Session,提供save()/delete()/update()/get /load()/hql/QBC等方法.
Hibernate.cfg.xml 配置数据库链接信息,声明映射文件,和其他配置.
.hbm.xml 对象到表,属性到列的对应关系.
Compass:
是 OSEM/Compass.从对象到 document,从 document 到对象.是对 Lucene  API 的一种封装.
通过 CompassSession.提供save()/delete()/update()/get/load()/queryString/Query等方 法.
Compass.cfg.xml 配置链接信息(索引目录),声明映射文件,和其他配置
.pom.xml 对象到document,属性到field的对应关系.

2. 在使用上进行对比.
Hibernate:
Hibernate.cfg.xml
Configuration
①编程方式:
cfg. = new Configuation();
cfg.setPropxxx();
cfg.setPropxxx();

② 配置文件
Cfg = new Configration().configure();
Cfg.configure(“/hibernate.cfg.xml”);
③Hbm.xml
使 用.hbm.xml文件(XML文件)
注解
Compass:
主 配置
CompassConfiguration
①编程方式
Cfg = new CompassConfiguration()
Cfg.set(“key”,”value”);

② 配置文件
Cfg.configure();
//cfg.configure(“/compass.cfg.xml”);
③ 映射文件:
XML文件
注解

3.API的对比
Hibernate:
Fg = new Configuration().configure();
Sf = cfg.buildSessionFactory();

Session = sf.openSession();
Tx = session.beginTransaction();

//do something
//session.save/update/delete/…..()

Tx.commit();
Session.close();

Compass:
Cfg = new CompassConfiguration().configure();
Compass = cfg.buildCompass();

CompassSession session = compass.openSession();
CompassTransaction tx = session.beginTransaction();

//do something
//session.save/update/delete/….()

Tx.commit();
Session.close();

4.API:
 Configuration --> CompassConfiguration
 SessionFactory --> Compass
 Session --> CompassSession
 Transaction --> CompassTransaction

5.Session方法:
保 存: save() --> create()
删除:delete() --> delete()
Update() --> save()
saveOrUpdate() --> save()
get/load() --> get/load()

6.Compass 是使用过程
1)导入 jar包
2)对映射文件进行配置.这里采用的是注解 方式.
@Searchable
在对象类前注释.
@SearchableId
在对象的ID属性上注释.
@SearchableProperty(store = Store.YES, index = Index.ANALYZED, boost = 2.0F)
在对象的普通属性上注释.
store = Store.YES是否存储
index = Index.ANALYZED是否建立索引
boost = 2.0F对排序起到作用.
3)加载相关的配置文件
private Compass compass;

    public void init() {
        CompassConfiguration cfg = new CompassConfiguration();
        cfg.setConnection("./indexPath/");// 连接信息
        cfg.addClass(Article.class);// 声明映射信息
        // cfg.setSetting("key", "value");//其他配置
        compass = cfg.buildCompass();
    }

4)创建索引

        CompassSession session = compass.openSession();
        CompassTransaction tx = session.beginTransaction();
        session.create(article);
        tx.commit();
        session.close();

5)搜 索
        List<Article> list = new ArrayList<Article>();
        CompassSession session = compass.openSession();
        CompassTransaction tx = session.beginTransaction();

        CompassHits hits = session.find(queryString);
        for (int i = 0; i < hits.length(); i++) {
            Article article = (Article) hits.data(i);
            list.add(article);
        }
        tx.commit();
        session.close();
       
总结:        
通过上面实例行程序的编写,可以和昨天学习的 luncene 形成鲜明的对比.不过,老师说了,就像学习 Hibernate 一样,JDBC 没有学习好 Hibernate 是不可能学好的.同样 luncene ,基础没有学习好,Compass 是不可能学习好的,就算会用,也不能理解.不能达到一定的高度.所以,学习要了解的深入一些.不能只是皮毛.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值