根据匹配项对SearchQuerySet进行排序

时间:2018-12-18 11:19:20

标签: django elasticsearch django-haystack

我一直在使用elasticsearch进行搜索,并使用干草堆库显示要显示的项目。除了一件事,一切都工作正常。我希望对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是Haystack的默认CharField,而search_param1是EdgeNGram。 q是通过的术语。

0 个答案:

没有答案