精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-06-19
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》 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 5078 次