Django-haystack按标题排序结果

vdb*_*oor 3 django solr django-haystack

我想按标题对我的django-haystack查询的结果进行排序.

from haystack.query import SearchQuerySet
for result in SearchQuerySet().all().order_by('result_title_sort'):
    print result.result_title_sort
Run Code Online (Sandbox Code Playgroud)

我不断收到此错误:

字段"result_title_sort"中的术语多于文档,但是无法对标记化字段进行排序

这是我的haystack字段定义:

result_title_sort = CharField(indexed=True, model_attr='title')
Run Code Online (Sandbox Code Playgroud)

我应该如何定义该字段,以便对其进行排序?

kev*_*rks 5

谢谢Mark Chackerian,您的解决方案确实可以用于排序.但是我仍然觉得修改自动生成的输出有点不舒服schema.xml.我通过使用Solr的<dynamicField>字段类型找到了解决方案.关于如何使用动态字段,Django-Haystack文档并不是很明确,但基本上如果你只是在s 的dict返回中包含一个新密钥,并且将在索引时将a 添加到文档中.SearchIndexprepare()dynamicField

从中删除现有属性 SearchIndex

#result_title_sort = CharField(indexed=True, model_attr='title') 
def prepare(self, obj):
    prepared_data['result_title_sort_s'] #notice the "_s"
Run Code Online (Sandbox Code Playgroud)

以上将在文档中创建一个动态字符串字段result_title_sort_s,您可以通过该字段对结果进行排序.