Заказать SearchQuerySet в соответствии с условиями - PullRequest
0 голосов
/ 18 декабря 2018

Я использовал эластичный поиск для поиска и отображения предметов с использованием библиотеки стога сена.Все работает хорошо, кроме одной вещи.Я хочу, чтобы 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 - это срок, который пройден.

...