What is Luigi?
Luigi is a Java library that aims to provide Lucene's full-text search in a highly configurable and loosely coupled library.
Lucene is very easy to use, but very difficult to reuse. The application code that handles indexing is very tightly coupled with Lucene's code, and most of the indexing configuration ends up being hardcode. Luigi provides a layer of services on top of Lucene that can be configured and managed through Spring beans.
The power of POJOs
Luigi uses Plain Old Java Objects as input as well as output of searches, using descriptors provided at assembly time to transform the data. Assembly and configuration are done through Spring's bean definitions, and the code that matches your data objects to Lucene documents uses reflection to decouple one from the other completely. This provides a very high level of interoperability and extensibility.
Background indexing through the Connector API
We developed an event library to enable indexing in the background and concurrent searching. When your application changes data, it only needs to fire an event passing the correct object, and the index will be updates in the background. When the index finishes updating, it will notify all listening Searchers, which will hot-swap the Lucene searcher, so new searches already see the updated data, while ongoing searches (at the moment of update) finish their work cleanly.
|