xapian-haystack/README.rst

4.4 KiB

Xapian backend for Django-Haystack

image

Xapian-haystack is a backend of Django-Haystack for the Xapian search engine. Thanks for checking it out.

Haystack is an API for searching in Django websites. xapian-haystack is a bridge from Haystack, the API, to Xapian, a search engine.

Xapian is a powerful search engine written in C++ that uses probabilistic measures to efficient search on text. More useful information can be found here (read the docs).

Requirements

  • Python 2.4+ (Python 3.3 not support yet).
  • Django 1.5+
  • Django-Haystack 2.0.X
  • Xapian 1.0.13+

In particular, the backend is built on Travis using:

  • Python 2.7.6
  • Django 1.6.4
  • Django-Haystack (latest)
  • Xapian 1.2.8 (libxapian22)

Features

Xapian-Haystack provides all the standard features of Haystack:

  • Weighting
  • Faceted search (date, query, etc.)
  • Sorting
  • Spelling suggestions

Additionally, Xapian also uses a stemmer to create its index, with support to different languages.

Installation

First, you need to install Xapian in your machine. We recommend installing it on the virtual environment using this gist. First you activate the virtual environment, and them run the script.

You can test the installation was successful by running:

python -c "import xapian"

Finally, install Xapian-haystack by running:

pip install git+https://github.com/jorgecarleitao/xapian-haystack.git

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': 'haystack.backends.xapian_backend.XapianEngine',
        'PATH': os.path.join(os.path.dirname(__file__), 'xapian_index')
    },
}

.. _languages: http://xapian.org/docs/apidoc/html/classXapian_1_1Stem.html

The backend includes the following settings:

  • `HAYSTACK_XAPIAN_LANGUAGE`: the stemming language. By default is english, the list of available languages can be found here.
  • HAYSTACK_XAPIAN_WEIGHTING_SCHEME - sets the weighting scheme used during search. See the default scheme in the source code or see Xapian::BM25Weight::BM25Weight in the Xapian documentation for further information.
  • `HAYSTACK_XAPIAN_FLAGS`: used to further configure how indexes are stored and manipulated. By default, this value is set to FLAG_PHRASE | FLAG_BOOLEAN | FLAG_LOVEHATE | FLAG_WILDCARD | FLAG_PURE_NOT. See the Xapian::QueryParser::feature_flag in the Xapian documentation for further explanation of the available Xapian.QueryParser flags.

Testing

Xapian-Haystack has a test suite in continuous deployment in Travis. The script .travis.yml contains all the steps to run the test suite on your machine.

Source

The source code can be found in github.

Credits

This fork of xapian-haystack is maintained by Jorge C. Leitão but David Sauve was the main contributor of Xapian-Haystack; Xapian-haystack was originally funded by Trapeze.

License

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

Questions, Comments, Concerns:

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

You can ask questions on the django-haystack mailing list or in the irc channel.