lupyne /

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.
Lucene has a reputation for being a relatively low-level toolkit, and the goal of PyLucene is to wrap it through automatic code generation.
So although PyLucene transforms Java idioms to Python idioms where possible, the resulting interface is far from Pythonic.
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 a popular option for remote searching and other advanced features, 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.
 * Spellchecking

Changes in 0.6:
 * Python 2.7 compatible
 * Efficient spellchecking:  suggestions (auto-complete) and corrections (did you mean?)
 * Support for custom query parsers, including a spellchecker
 * Queries support extracting terms
 * Indexing supports boosting documents
 * Optimized document field selection
 * More configurable server start options, similar to cherryd
 * Span queries support masking and payloads
 * Remote searching support:
   - extended query parsing options
   - spellchecking for queries and individual terms
   - automated code reloading and index refreshing
   - index refreshing optionally maintains cached
   - search allows minimal document selection

import os
from distutils.core import setup

packages = []
for dirpath, dirnames, filenames in os.walk('lupyne'):
    dirnames[:] = [dirname for dirname in dirnames if not dirname.startswith('.')]
    packages.append(dirpath.replace(os.sep, '.'))

    description='Pythonic search engine based on PyLucene, including a standalone server based on CherryPy.',
    author='Aric Coady',
        'Development Status :: 5 - Production/Stable',
        'License :: OSI Approved :: Apache Software License',