Я использую django-стог-сена для страницы результатов поиска на моем сайте. Я в основном сделан, но не совсем довольный упорядочиванием и не совсем уверенный, как стог сена решает, как заказать все.
Я знаю, что могу переопределить SearchQuerySet при помощи order_by
но это переопределяет его полностью. Скажем, я хочу вынудить поиск заказать в запасе (BooleanField), так, чтобы продукты, которые находятся в, накопили шоу на вершине, но затем сделали все остальное, как это обычно было бы. Как я делаю это?
Я пытался делать order_by('-in_stock', 'content')
содержание числа было тем, что оно использовало по умолчанию, но оно производит совсем другие результаты, если я просто оставляю это, делают его собственное упорядочивание.
Спасибо за любой вход по этому вопросу!
У вас должен быть индекс в вашем search_indexes.py с in_stock:
class YourModel(indexes.SearchIndex):
in_stock = indexes.BooleanField(model_attr='model_in_stock')
и в ваших URL:
sqs = SearchQuerySet().models(YourModel).order_by('-in_stock', 'score') # score is a field of haystack
Таким образом, вы сначала показываете результаты, если они есть в наличии, а затем по количеству очков!