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).