Xapian-haystack is a backend of Django-Haystack for the Xapian search engine. Thanks for checking it out.
You can find more information about Xapian here.
Xapian-Haystack provides all the standard features of Haystack:
- Weighting
- Faceted search (date, query, etc.)
- Sorting
- Spelling suggestions
- Python 2.4+ (Python 3.3 not support yet).
- Django 1.5+
- Django-Haystack 2.0.X
- Xapian 1.0.13+
In particular, we build this backend on Travis using:
- Python 2.7.6
- Django 1.6.4
- Django-Haystack (latest)
- Xapian 1.2.8 (libxapian22)
First you need to install Xapian in your machine. We recommend installing it on the virtual environment using this gist: activate the virtual environment and run the script.
You can test if the installation was successful by running:
python -c "import xapian"
Finally, install Xapian-Haystack by running:
pip install git+https://github.com/notanumber/xapian-haystack.git
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:
HAYSTACK_XAPIAN_LANGUAGE
: the stemming language; the default is english and the list of available languages can be found here.HAYSTACK_XAPIAN_WEIGHTING_SCHEME
: a tuple with parameters to be passed to the weighting scheme BM25. By default, it uses the same parameters as Xapian recommends; this setting allows you to change them.HAYSTACK_XAPIAN_FLAGS
: the options used to parse AutoQueries; the default isFLAG_PHRASE | FLAG_BOOLEAN | FLAG_LOVEHATE | FLAG_WILDCARD | FLAG_PURE_NOT
See here for more information on what they mean.
Xapian-Haystack has a test suite in continuous deployment in Travis. The script .travis.yml
contains
all the steps required to run the test suite.
Other way is to clone Django-Haystack,
copy the content of the tests/
folder of Xapian-Haystack to the tests/
folder of Haystack,
and copy xapian_backend.py
to haystack/backends/
folder.
The tests can then be run from the folder tests/
using:
django-admin.py test --settings=xapian_settings xapian_tests
The source code can be found in github.
Xapian-Haystack is maintained by Jorge C. Leitão; David Sauve was the main contributor of Xapian-Haystack and Xapian-Haystack was originally funded by Trapeze.
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.
Feel free to open an issue here or pull request your work.
You can ask questions on the django-haystack mailing list
or in the irc #haystack
.