Link Search Menu Expand Document

Полнотекстовый поиск стандартными средствами Postgres

Официальная документация

Туториал по полнотекстовому поиску в Django с Postgres

Для того чтобы организовать полнотекстовый поиск на сайте можно воспользоваться стандартными средствами Postgtrs

from django.contrib.postgres.search import (SearchVector, SearchQuery, SearchHeadline)

# ...
def get_queryset(self):
    query = self.request.GET.get("q")

    search_query = SearchQuery(query, config='russian')
    search_vector = SearchVector("name", "quote", config='russian')
    search_headline = SearchHeadline("quote", search_query, highlight_all=True, config='russian')

    result = Quote.objects.annotate(
        search_rus=search_vector, 
        headline=search_headline
        ).filter(search_rus=search_query)

    return result
# ...

Для ускорения процесса поиска можно не аннотировать каждый раз вектор для поиска, а генерировать значение этого вектора при изменении записи в специальное поле (например можно создать сигнал на изменение модели), и уже в последствии искать по этому полю.