Architecture Overview¶
SearchQuerySet¶
One main implementation.
Standard API that loosely follows
QuerySetHandles most queries
Allows for custom “parsing”/building through API
Dispatches to
SearchQueryfor 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.AdminSiteHandles 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).