Pythonic extensions to PyLucene, including a standalone search server based on CherryPy.
Project highlights
- The core engine is a high level interface to PyLucene, which is a Python extension for accessing the popular Java Lucene search engine. Although PyLucene transforms some Java idioms to Python idioms, its primary goal is to be API compatible with Lucene and as such does not have a very Pythonic interface. See examples for comparisons with the Lucene API.
- A RESTful JSON search server, based on CherryPy. Many python applications which require better search capabilities are migrating from using conventional client-server databases, whereas Lucene is an embedded search library. Solr is another option for remote searching, but then any customization or embedded use is coupled to Java and XML. Using a python web framework instead can provide the best of both worlds, e.g., batch indexing offline and remote searching live.
- A simple client to make interacting with the server as convenient as an RPC interface. It handles all of the HTTP interactions, with support for compression, json, and connection reuse.
- Advanced search features:
- Distributed searching with support for redundancy, partitioning, and sharding.
- Optimized faceted search.
- Optimized prefix and range queries.
- Geospatial support.
Dependencies
LuPyne should run anywhere PyLucene does, though its primary testing is on the popular unix variants.
- Python 2.6
- PyLucene 2.4.1 or PyLucene 2.9
- CherryPy 3.1 (3.1.2 recommended): only required for server
Status
The project is in production use and considered stable, though the low version number reflects that experimental interfaces may still change. The trunk is also kept stable, with documentation and tests.
Changes in 0.3
- PyLucene 2.9 support, including NumericFields and new range queries.
- Extensible client load balancing.
- PyLucene memory leak fixes (or warnings).
- Searchers support highlighting.
- IndexReaders support span queries, term vectors, and payloads.
- Fields support readers, token streams, and additional attributes.
- Custom analyzers.
Changes in 0.2
- More examples and documentation.
- Support for MultiSearchers.
- Field support for datetimes and custom formatting.
- More spatial utility methods.
- Expanded client support, including distributed searching.
- Easier server configuration, read-only support, and increased error handling.