无法使用 Django Haystack 和 Elasticsearch 搜索术语的一部分
Unable to search part of a term with Django Haystack and Elasticsearch
我有一个基于
的项目
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
其他问题仍然未解决,我找不到任何解决方案。
听起来您可能 运行 遇到了#1 的最小字符数问题。看一下 Haystack documents for autocomplete,它显示了一种使用 EdgeNgramField
而不是典型的 CharField
.
的方法
我有一个基于
的项目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
其他问题仍然未解决,我找不到任何解决方案。
听起来您可能 运行 遇到了#1 的最小字符数问题。看一下 Haystack documents for autocomplete,它显示了一种使用 EdgeNgramField
而不是典型的 CharField
.