无法使用 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 }}

在我的数据库中有几项:

当我用我的视图搜索时,我有奇怪的行为。

  1. 正在使用查询进行搜索 "ac" 我没有收到任何结果!我期待拥有我所有的物品。我尝试使用 .filter(content__contains=query) 更改查询(我知道这是默认设置!)但没有任何更改。

  2. 使用查询 "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.

的方法