InfoQ

News

Compass 2.0: Simplification, integration, and performance improvements

Posted by Ryan Slobojan on May 14, 2008 12:00 PM

Community
Java
Topics
Search
Tags
Compass ,
Coherence ,
ORM ,
Lucene ,
Terracotta ,
GigaSpaces

The Compass project, an open source project based on Lucene which aims to simplify the integration of search into Java applications, recently released version 2.0. InfoQ spoke with Compass founder Shay Banon to learn more about this release and about what Compass provides to the Java community.

Banon identified the major features of this release as:

  • Simplification of O/R Mapping (ORM) integrations -- All of the integration features, such as real-time mirroring of ORM changes in the search index and complete mapping-based indexing of the database, are now available through configuration properties in the Hibernate/JPA configuration file
  • Distributed data grid integration -- Integration with GigaSpaces, Terracotta and Coherence are now supported as methods for enabling Lucene index storage as part of a data grid, and the Lucene index can still be used transparently by Lucene libraries and tools
  • Searchable data grid capability -- Changes which occur on the data grid are automatically mirrored to the Lucene index through the Object to Search Engine mapping and the integrations with Coherence CacheStore and the GigaSpaces mirror service
  • Performance improvements -- Major internal enhancements in Compass combined with the improvements in Lucene 2.3 have resulted in a major increase in Compass performance
  • Easy upgrade from Compass 1.2 -- The main API has remained the same, with configuration tweaks and minor API changes being documented in the upgrade notes. A reindex is also needed due to internal changes, but overall the upgrade process should be fairly simple

Compass also has a new project website at http://www.compass-project.org, and a complete listing of changes available.

Banon also described the Compass core features, and how Compass compares with Solr, Nutch and base Lucene:

Compass, at its core, aims to simplify the integration of search into any Java application. Compass tries to simplify the API when working with a search engine. The API should be very familiar for people who are used to ORM libraries. Another main feature of Compass is the ability to easily map a Java object model into the search engine as well as other formats such as XML and Map like structures. On top of that, Compass steps even further and provides seamless integration with ORM libraries, data grids, and other.

Regarding Lucene, Compass is built on top of Lucene. All of Lucene features are exposed and can be used with Compass, but Compass tries to simplify its usage, especially within your typical Java application. Regarding Solr, I guess it also aims at simplifying Lucene, but in a different way. It exposes an http service for indexing and searching, but I heard that an "embedded" version of it will be available as well. I guess the main difference stems from a different viewpoint on how search is integrated into an application. I will just note that creating an http search service on top of Compass is very simple and many users have done just that.

When asked about future plans for Compass, Banon stated that most of the features are driven by user demand. Potential future ideas include looking at different indexing formats such as JSON, more comprehensive and full-featured data grid integration to enable colocated indexing and searching, and a UI layer search integration to create a better out-of-the-box experience. Banon also added that all Compass feedback and help is greatly appreciated.

Kewl! by ARI ZILKA Posted May 14, 2008 10:09 PM
  1. Back to top

    Kewl!

    May 14, 2008 10:09 PM by ARI ZILKA

    Great work Shay! --Ari

Educational Content

Bindings, Platforms, and Innovation

This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.

Orchestrating Long Running Activities with JBoss / JBPM

This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.

Neo4j - The Benefits of Graph Databases

This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.

Realistic about Risk: Software development with Real Options

This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.

Communication Flexibility Using Bindings

This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.

Writing DSLs in Groovy

After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.

Scaling Agile with C/ALM (Collaborative Application Lifecycle Management)

IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.

Concurrent Programming with Microsoft F#

Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.