我有一个基于
的项目Django==1.9.2
django-haystack==2.4.1
elasticsearch==2.2.0
一个非常简单的搜索视图:
def search_view(request):
query = request.GET.get('q', '')
sqs = SearchQuerySet().filter(content=query)
params = {
'results': sqs,
'query': query,
}
return render_to_response('results.html', params,
context_instance=RequestContext(request))
我的搜索索引很简单:
class CategoryIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
name = indexes.CharField(model_attr='name')
def get_model(self):
return Category
def index_queryset(self, using=None):
return self.get_model().objects.filter(published=True)
category_text.txt
文件只是:
{{ object.name }}
在我的数据库中,我有几个项目:
当我用我的观点搜索时,我的行为很奇怪。
使用查询“ac”搜索我没有收到任何结果!我期待着我的所有物品。我尝试使用.filter(content__contains=query)
更改查询(我知道这是默认设置!)但没有任何更改。
使用查询“acqua”搜索我收到1个结果对象的结果(正确),但当我尝试打印时,result.object
字段为None
(其他字段包含正确的信息)。
我做错了什么? 谢谢。
更新
我找到了问题2的解决方案。来自PyPi的最新Haystack版本不兼容Django 1.9.x。
我刚刚将-e git+https://github.com/django-haystack/django-haystack.git#egg=django-haystack
添加到我的requirements.txt文件中,问题已解决。关于GitHub的更多信息:https://github.com/django-haystack/django-haystack/issues/1291
其他问题仍未解决,我找不到任何解决方案。
答案 0 :(得分:1)
听起来你可能会遇到#1的最小字符数问题。请查看使用EdgeNgramField
而不是典型CharField
显示方法的Haystack documents for autocomplete。