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

本文介绍如何使用Compass全文检索框架进行配置与索引建立,包括加载配置文件、构建Compass实例、建立索引及查询操作等关键步骤,并展示了运行测试类后的后台打印结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2.2.1.2.5.1       加载配置文件,构建compass实例和Template

 

CompassConfiguration config = new CompassConfiguration().configure();

 

在Compass中使用CompassConfiguration类来加载配置文件,通常配置文件都是放在src根目录,这样的话,直接调用configure()就可以得到该配置文件。

在这个library例子中compass.cfg.xml文件是放在其他包下,因此必须采用下面的方法来获取该配置文件。同时通过addClass()方法加载实体类。

 

CompassConfiguration config = new CompassConfiguration().configure("/org/compass/sample/library/compass.cfg.xml").addClass(Author.class).addClass(Article.class).addClass(Book.class);

//根据配置文件中的设置构建一个Compass实例

compass = config.buildCompass();

//删除老的索引,创建新索引

compass.getSearchEngineIndexManager().deleteIndex();

compass.getSearchEngineIndexManager().createIndex();

//定义一个compassTemplate

compassTemplate = new CompassTemplate(compass);

 

 

2.2.1.2.5.2       建立索引

 

setUpData()这个方法里面的内容就是compass建立索引的过程。

 

1、获取session,启用transaction。

这跟hibernate一模一样。相信大家都明白里面的意思:)

CompassSession session = compass.openSession();

CompassTransaction tx = session.beginTransaction();

   

2、初始化索引实体。

   

    3、保存索引,提交事务和关闭session

    。。。

    session.save(实体);

    tx.commit();

session.close();

   

注:必须把所有的root级索引实体均save进去。

 

2.2.1.2.5.3       查询

 

1、load()

testSetUpData()方法中:

Author author = (Author) session.load(Author.class, jackLondon.getId());

    load()的用法跟hibernate的load()也是一样的。通过id来得到具体的实体对象。

2、find()

    CompassSession的find(),可以把一个关键字传到后台,并调用lucene来执行索引的搜索。这也跟hibernate中的用法类似,区别在于hibernate返回的是List类型的对象,而compass返回的是一个Compass Hits对象。

3、Compass Hits

(因为javaeye的过滤原因,所以把Compass和Hits之间多加了一个空格!)

    Compass Hits是对Lucene中的Hits对象的一个封装。它提供了一些可以直接调用结果的方法:

1)、hits.length()    查询结果大小

2)、hits.data(int)

       hits.data(int)的参数表示取出当前结果集中的第几个结果。返回的结果是一个Object类型,可以获取指定实体类型:Author author = (Author)hits.data(0);

也可以获取root级标识接口:((Identifiable) hits.data(hitNumber)).getId()

3)、hits. resource(int)

返回的结果是一个Resource类型。可以获取其别名:resource.getAlias()

4)、hits.score(int)

       hits. score (int)返回得分。具体的评分规则暂未研究。

2.2.1.2.5.4       测试类运行后台打印

//加载compass系统配置文件

[INFO] CompassConfiguration - Configuring from resource [/org/compass/sample/library/compass.cfg.xml]

//加载compass通用元数据定义文件

[INFO] CompassConfiguration - Mapping resource [org/compass/sample/library/library.cmd.xml] in class loader

[INFO] DTDConfigurationBuilder - Configured Compass [default]

//加载索引实体映射文件

[INFO] CompassConfiguration - Mapping class [class org.compass.sample.library.Author]

[INFO] CompassConfiguration - Mapping class [class org.compass.sample.library.Article]

[INFO] CompassConfiguration - Mapping class [class org.compass.sample.library.Book]

[INFO] LuceneSearchEngineFactory - Not using highlighter - no highlighter jar included.

[INFO] LuceneSearchEngineOptimizerManager - Starting scheduled optimizer [class org.compass.core.lucene.engine.optimizer.AdaptiveOptimizer] with period [10000ms]

[INFO] DefaultLuceneSearchEngineIndexManager - Starting scheduled index manager with period [60000ms]

Found [3] hits for [jack] query

======================================================

ALIAS [book] ID [1] SCORE [0.49690697]

:::: White Fang

 

ALIAS [book] ID [2] SCORE [0.49690697]

:::: The Call of the Wild

 

ALIAS [author] ID [1] SCORE [0.43920785]

:::: Mr  Jack London

 

[INFO] DefaultCompass - Closing Compass [default]

[INFO] DefaultCompass - Closed Compass [default]

2.2.1.2 总结

待加

2.2.1.3 参考

1、《开发自己的搜索引擎 lucene2.0+Heritrix》邱哲、符滔滔编著

2、《ccompass-reference》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值