notanumber / xapian-haystack

A Xapian backend for Haystack
GNU General Public License v2.0
154 stars 93 forks source link

Xapian backend for Django-Haystack

.. image:: https://github.com/notanumber/xapian-haystack/actions/workflows/test.yml/badge.svg :target: https://github.com/notanumber/xapian-haystack/actions :alt: GitHub Actions .. image:: https://coveralls.io/repos/notanumber/xapian-haystack/badge.svg?branch=master&service=github :target: https://coveralls.io/github/notanumber/xapian-haystack?branch=master .. image:: https://img.shields.io/pypi/v/xapian-haystack.svg :target: https://pypi.org/project/xapian-haystack/ :alt: PyPI version

Xapian-haystack is a backend of Django-Haystack <http://haystacksearch.org/> for the Xapian <https://xapian.org> search engine. Thanks for checking it out.

You can find more information about Xapian here <https://getting-started-with-xapian.readthedocs.io>__.

Features

Xapian-Haystack provides all the standard features of Haystack:

Limitations

The endswith search operation is not supported by Xapian-Haystack.

Requirements

Installation

First, install Xapian in your machine e.g. with the script provided, install_xapian.sh. Call it after activating the virtual environment to install::

source <path>/bin/activate
./install_xapian.sh <version>

<version> must be >=1.4.0. This takes around 10 minutes.

Finally, install Xapian-Haystack by running::

pip install xapian-haystack

Configuration

Xapian is configured as other backends of Haystack. You have to define the connection to the database, which is done to a path to a directory, e.g::

HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'xapian_backend.XapianEngine',
        'PATH': os.path.join(os.path.dirname(__file__), 'xapian_index')
    },
}

The backend has the following optional settings:

Testing

Xapian-Haystack has a test suite in continuous deployment with GitHub Actions. The file .github/workflows/test.yml contains the steps required to run the test suite.

Source

The source code can be found in github <https://github.com/notanumber/xapian-haystack/>_.

Credits

Xapian-Haystack is maintained by Jorge C. Leitão <http://jorgecarleitao.net>; David Sauve <mailto:david.sauve@bag-of-holding.com> was the main contributor of Xapian-Haystack and Xapian-Haystack was originally funded by Trapeze <http://www.trapeze.com>. Claude Paroz <https://www.2xlibre.net> is a frequent contributor. ANtlord <https://github.com/ANtlord>__ implemented support for EdgeNgram and Ngram.

License

Xapian-haystack is free software licenced under GNU General Public Licence v2 and Copyright (c) 2009, 2010, 2011, 2012 David Sauve, 2009, 2010 Trapeze, 2014 Jorge C. Leitão. It may be redistributed under the terms specified in the LICENSE file.

Questions, Comments, Concerns:

Feel free to open an issue here <https://github.com/notanumber/xapian-haystack/issues>__ or pull request your work.

You can ask questions on the django-haystack mailing list <https://groups.google.com/group/django-haystack/>_: or in the irc #haystack.