Я использовал эластичный поиск для поиска и отображения предметов с использованием библиотеки стога сена.Все работает хорошо, кроме одной вещи.Я хочу, чтобы SearchQuerySet был отсортирован так, чтобы элементы с точным совпадением соответствовали первому, а частичные совпадения позже. Вот код.
sqs = SearchQuerySet().order_by('-created_at')
q = self.request.GET.get('q', '')
if q:
q = escape(q).replace('&', '&')
q = q.replace(''', "'")
q = q.replace('"', '"')
print(q)
sqs1 = sqs.filter(search_exact1__exact=q, global_search=True, is_active=True)
sqs2 = sqs.filter(search_param1=q, global_search=True, is_active=True).exclude(search_exact1__exact=q)
sqs = sqs1 | sqs2
return sqs
Где search_exact1
- значение по умолчанию CharField of Haystack и search_param1
это EdgeNGram.q
- это срок, который пройден.