Our Mission Statement
Compass is a powerful, transactional Object to Search Engine Mapping (OSEM) Java framework. Compass allows you to declaratively map your Object domain model to the underlying Search Engine, synchronizing data changes between Index and different datasources. Compass provides a high level abstraction on top of the Lucene low level API. Compass also implements fast index operations and optimization and introduces transaction capabilities to the Search Engine.
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.
- Easily extendable into any application model.
- Provide rich Search Engine semantics to find application data.
- Synchronize data changes between Search Engine and datasource.
- Write less code, find data quicker.
Compass is a layered Java Search Engine framework, built on the Lucene Search Engine. Its goal is to empower application developers with a power means to integrate search engine capabilities to the application stack declaratively.Compass Core
- Lucene Jdbc Directory: An implementation of Lucene Directory to store the index within a database (using Jdbc). It is separated from Compass code base and can be used with pure Lucene applications.
- Search Engine API: A powerful and simple to use abstraction on top of Lucene Search Engine.
- OSEM: Object/Search Engine Mapping technology (using xml and/or Java 5 annotations). 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 externalize common mapping meta-data into easy to manage centralized resource.
- Hibernate: Provides support for indexing your datasource through OSEM and the Hibernate ORM tool. It also implements data mirroring through Hibernates event based mechanism.
- JPA: Provides support for indexing your datasource through OSEM and an implementation of EJB3 JPA (Java Persistence API). It also implements data mirroring using JPA event registration or using specifics of the underlying JPA implementation.
- JDO: Provides support for indexing your datasource through OSEM and JDO ORM tool. It also implements data mirroring through JDO 2 event based mechanism.
- OJB: Provides support for indexing your datasource through OSEM and Apache OJB ORM tool. It also implements data mirroring through 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