Мне не удалось решить эту проблему с помощью фильтра. Поэтому я искал результаты поиска в Google и нашел PostgreSQL Text Search .
Этот поиск выполняется по текстовому полю и возвращает фрагменты этого текста. И выделите search_values.
Мой окончательный код выглядит так:
search_value = request.query_params['searchvalue']
queryset = Document.objects.extra(
select={
'snippet': (
"ts_headline(raw_text, plainto_tsquery(%s), "
"'StartSel=*,StopSel=*,MaxFragments=2,"
"FragmentDelimiter=...,MaxWords=8,MinWords=1')"
),
},
where=["search @@ plainto_tsquery(%s)"],
params=[search_value],
select_params=[search_value, search_value]
)
return Response(queryset.values('id', 'title', 'snippet', 'doc_number'))
Надеюсь, это поможет другим:)