67 lines
1.7 KiB
ReStructuredText
67 lines
1.7 KiB
ReStructuredText
.. _ref-architecture-overview:
|
|
|
|
=====================
|
|
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 query
|
|
* Handles 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).
|