website/website/api/filters.py
Jake Howard 66156f2be7
Correctly order LMOTFY endpoint
Ordering by "relevance" actually yields the least relevant results first. Remove ordering and assume the most relevant is what's needed.
2022-10-31 20:59:24 +00:00

23 lines
732 B
Python

from typing import Any
from django.db.models import Value
from django.http.request import HttpRequest
from rest_framework.filters import SearchFilter
from wagtail.query import PageQuerySet
from wagtail.search.utils import parse_query_string
class WagtailSearchFilter(SearchFilter):
def filter_queryset(
self, request: HttpRequest, queryset: PageQuerySet, view: Any
) -> PageQuerySet:
search_query = request.query_params.get(self.search_param, "")
if not search_query:
return queryset.annotate(relevance=Value(0)).none()
filters, query = parse_query_string(search_query)
results = queryset.search(query, order_by_relevance=True)
return results.get_queryset()