Architecture Overview
SearchQuerySet
One main implementation.
Standard API that loosely follows
QuerySet
Handles most queries
Allows for custom “parsing”/building through API
Dispatches to
SearchQuery
for actual queryHandles automatically creating a query
Allows for raw queries to be passed straight to backend.
SearchQuery
Implemented per-backend.
Method for building the query out of the structured data.
Method for cleaning a string of reserved characters used by the backend.
Main class provides:
Methods to add filters/models/order-by/boost/limits to the search.
Method to perform a raw search.
Method to get the number of hits.
Method to return the results provided by the backend (likely not a full list).
SearchBackend
Implemented per-backend.
Connects to search engine
Method for saving new docs to index
Method for removing docs from index
Method for performing the actual query
SearchSite
One main implementation.
Standard API that loosely follows
django.contrib.admin.sites.AdminSite
Handles registering/unregistering models to search on a per-site basis.
Provides a means of adding custom indexes to a model, like
ModelAdmins
.
SearchIndex
Implemented per-model you wish to index.
Handles generating the document to be indexed.
Populates additional fields to accompany the document.
Provides a way to limit what types of objects get indexed.
Provides a way to index the document(s).
Provides a way to remove the document(s).