我必须根据已编入索引的某些字段从solr订购搜索结果。 我当前的api请求是这样的,没有排序。
http://127.0.0.1:8000/api/v1/search/facets/?page=1&gender=Male&age__gte=19
它根据索引顺序提供搜索结果。但我必须根据已经编入索引的DateTimeField的'last_login'重新排序此结果。
这是我的观点
class ProfileSearchView(FacetMixin, HaystackViewSet):
index_models = [Profile]
serializer_class = ProfileSearchSerializer
pagination_class = PageNumberPagination
facet_serializer_class = ProfileFacetSerializer
filter_backends = [HaystackFilter]
facet_filter_backends = [HaystackFilter, HaystackFacetFilter]
def get_queryset(self, index_models=None):
if not index_models:
index_models = []
queryset = super(ProfileSearchView, self).get_queryset(index_models)
queryset = queryset.order_by('-created_at')
return queryset`
这里我已经通过'created_at'值更改了默认搜索顺序。但是对于下一个请求,我根据'last_login'值进行了订购。我在我的请求中添加了一个新参数,如此
http://127.0.0.1:8000/api/v1/search/facets/?page=1&gender=Male&age__gte=19&sort= 'LAST_LOGIN'
但它给了我一个错误
SolrError:Solr响应错误(HTTP 400):[原因:未定义字段排序]
如何实现这种排序?请帮我解决一下。
答案 0 :(得分:0)
您提供的网址http://127.0.0.1:8000/api/v1/search/facets/不是直接的SOLR网址。它一定是你的中间件。既然您已经直接针对Solr尝试了查询并且它可以正常工作,那么问题必定存在于中间层中。
尝试打印或监控或检查日志,以查看middeware实际生成的URL,并将其与您知道的有效URL进行比较。