The Compass Framework is a first class open source Java framework, enabling the power of Search Engine semantics to your application stack declaratively.
Built on top of the amazing Lucene Search Engine, Compass integrates seamlessly to popular development frameworks like Hibernate and Spring.
Compass Framework project provides search capability to your application data model and synchronises changes with the datasource. With Compass: write less code, find data quicker.
Our aim for Compass is:
The simplest solution for enabling search capabilities within your application stack.
Promote the use of Search Engine as a lightweight application datasource.
Easy extendable into any application model.
Provide rich Search Engine semantics to find application data.
Synchronise data changes between Search Engine and datasource.
Write less code, find data quicker.
Here are some key features of "Compass Framework":
· Search Engine API: A powerful and simple to use abstraction on top of Lucene Search Engine.
· OSEM: Object/Search Engine Mapping technology. Allowing you to declare the mapping from application Object model to the underlying search engine semantics.
· Resource Mapping: Ability to map application resource through Compass when no Object model is available.
· Transaction support: Provides both LocalTransaction and JTATransaction implementations.
· Common Meta-data:The means to externalise common mapping meta-data into easy to manage centralised resource.
· Hibernate: Provides support for indexing your datasource through OSEM and the Hibernate ORM tool. It also implements data mirroring though Hibernates event based mechanism.
· JDO: Provides support for indexing your datasource through OSEM and JDO ORM tool. It also implements data mirroring though JDO 2 event based mechanism.
· OJB: Provides support for indexing your datasource through OSEM and Apache OJB ORM tool. It also implements data mirroring though OJB lifecycle event based mechanism.
· iBATIS: Provides support for indexing your datasource through OSEM and Apache iBATIS.
· JDBC: Provides support for indexing your datasource through mapping of a JDBC ResultSet or Table (non POJO based mapping). It also implements data mirroring capability.
· Hibernate: Extending both Spring and Compass::GPS Hibernate 3 support and providing support for Spring based SessionFactory.
· DAO: Uses the CompassTemplate and CompassCallback classes in Compass::Core as part of it's DAO (Data Access Object) support for Spring.
· AOP: Compass provides a set of Spring AOP Advices which helps to mirror data changes done within a Spring powered application. For applications with a data source or a tool with no gps device that works with it (or it does not have mirroring capabilities - like iBatis), the mirror advices can make synchronizing changes made to the data source and Compass index simpler.
· JDBC: Demonstrates how to use JDBC Gps device configured through Spring.
· OJB: Extending both Spring and Compass::Gps OJB support and providing support for Spring based PersistenceBrokerTemplate and OjbFactoryUtils. Real time data mirroring is supported through SpringOjbGpsDeviceInterceptor.
· MVC: Provides helper and support classes that build and integrate with Spring web MVC support. It has several base class controller helpers, as well as search and index controllers.
· Transaction: Provides integration for Spring based transaction management either using LocalTransaction or using Spring transaction synchronization services.
· DublinCore: Provides support for the Dublin Core meta data initiative and automatically generates constant classes enabling access to the meta-data definitions programmatically.
What's New in This Release:
· [CMP-85] - Problem with unmarshalling of parent/collection child where some child have null property values
· [CMP-90] - Change excludeFromAll mapping to exclude-from-all
· [CMP-91] - Change managedId mapping to managed-id mapping
· [CMP-96] - Documentation - CompassTemplate Code Incomplete
· [CMP-97] - Classcast exception in LuceneResource.addProperty
· [CMP-100] - Change CompassQueryBuilder#eqAlias to CompassQueryBuilder#alias
· [CMP-84] - Support Span Queries in Query Builder
· [CMP-88] - Resource#addProperty should work with Reader
· [CMP-94] - Highlighter Support
· [CMP-89] - Replace excludeFromAll with exclude-from-all in the mapping definitions
· [CMP-92] - Add compass.managedId.allowTokenized setting
· [CMP-93] - Control class property internal id index setting
· [CMP-98] - Implement toString for CompassQuery
· [CMP-99] - Change CompassQueryBuilder#eq to CompassQueryBuilder#term
· [CMP-101] - Refactor CompassHits to CompassHits and CompassDetachedHits
· [CMP-102] - Refactor CompassEnvironment and LuceneEnvironment into internal grouping