diff --git a/apps/news/models.py b/apps/news/models.py index 337ba0f3..c9fa3c8d 100644 --- a/apps/news/models.py +++ b/apps/news/models.py @@ -186,7 +186,8 @@ class NewsQuerySet(TranslationQuerysetMixin): _query |= elasticsearch_dsl.Q('wildcard', **{key: {'value': f'*{search_value}*', 'boost': boost + 30}}) search = NewsDocument.search().query('bool', should=_query)[0:10000].execute() ids = [result.meta.id for result in search] - return self.filter(id__in=ids) + preserved = Case(*[When(pk=pk, then=pos) for pos, pk in enumerate(ids)]) + return self.filter(id__in=ids).order_by(preserved) def trigram_search(self, search_value: str): """Search with mistakes by description or title or subtitle."""