InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

Compass 2.0: Simplification, integration, and performance improvements

Posted by Ryan Slobojan on May 14, 2008

Sections
Development,
Architecture & Design
Topics
Java ,
Search
Tags
Terracotta ,
ORM ,
Lucene ,
Coherence ,
GigaSpaces ,
Compass

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
  1. Back to top

    Kewl!

    by ARI ZILKA

    Great work Shay!

    --Ari

Educational Content

New-age Transactional Systems - Not Your Grandpa's OLTP

John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.

Cool Code

Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.

Collaboration: At the Extremities of Extreme

Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.

Yesod Web Framework

Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).

Transactions without Transactions

Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.