Compass入门及其与Spring、iBatis的整合
开始之前什么是Compass与Spring、iBatis的整合与Lucene的比较经验总结相关资源
本文是Compass的入门指引,通过实例介绍了Compass与iBatis、Spring的整合,适合不了解Compass的读者,但要求读者了解Lucene、Spring和iBatis,写过一些简单的应用。
文中使用的软件包:
?

?
什么是CompassCompass是一个Java搜索框架。它封装了Lucene,增加了一些Lucene不支持的特性(例如实时更新索引),支持各种数据(Java对象、xml、json)到索引的映射,支持各种数据源(JDBC, Hibernate, iBatis)。
?

?
图解(看得烦的直接跳过看下面的例子吧):
Compass - 一般在程序启动时建立并被整个程序共享,主要用于建立CompassSession并通过其管理索引数据。CompassSession - 用于处理数据的session。CompassTransaction - 手动进行事务管理,如果不使用,Compass会自动管理事务。CompassTemplate - 将session和transaction透明化。数据到索引的各种映射 - OSEM, XSEM, JSEM, RSEM。支持通过程序、XML、JSON进行配置。CompassGps - Gps的核心模块,管理GpsDevice,有两种实现:SingleCompassGps和DualCompassGps。CompassGpsDevice - 处理各种数据源到索引的操作:JDBC, Hibernate, iBatis等。不能独立使用而必须融合到CompassGps中。?
与Spring、iBatis的整合建索引1、假设Spring + iBatis的框架已经搭建好。
2、配置Domain的OSEM
- ??? 但如果只对单个表建索引,不会有这个问题。应该是Compass的一个bug,不知道新版本有没有解决。
?
2、最好自己封装排序字段和分页。
?
3、总结,Compass比较适用于逻辑不太复杂的应用,会比Lucene少写很多代码。但如果需要一些较为特殊的需求,或者对效率要求比较高,还是用Lucene吧。
?
相关资源Compass入门指南:http://www.yeeach.com/2008/03/23/compass-%E5%85%A5%E9%97%A8%E6%8C%87%E5%8D%97/
?
全文检索的基本原理:http://blog.csdn.net/forfuture1978/archive/2009/10/22/4711308.aspx
?
大型网站的Lucene应用:http://www.luanxiang.org/blog/archives/605.html
?