deepsearch is a Haystack extension used to index deep and nested model relationships. Its key features are:
-
deepsearch.indexes.DeepSearchIndex
class able to index deeply nested related objects and their fields. -
deepsearch.models.FieldBoost
model that stores weights of each index field for query-time field boosting. -
resume_index
command able to reindex a slice of all objects or only a subset of index fields. - Celery support for real-time indexing.
Requirements:
- Python >= 2.6
- Django >= 1.4
- django-haystack >= 2.1.0
- South.>= 0.8.1
- celery>=3.1 (optional)
Recommended:
- haystackbrowser (to inspect indexed data)
Setup:
-
Include
'deepsearch'
in yourINSTALLED_APPS
. -
Configure
HAYSTACK_CONNECTIONS
. -
To enable real-time indexing add the following line to
settings.py
:HAYSTACK_SIGNAL_PROCESSOR = 'deepsearch.signals.DeepSearchSignalProcessor'
-
Create
search_indexes.py
in your app directory. -
python manage.py init_boosts
to update index field weight values. You should run this whenever you modify index schema. -
python manage.py rebuild_index
will update index anddeepsearch.models.IndexRelation
table.