python - Django-haystack:添加自动完成所需的 `content_auto` 行后,rebuild_index 失败(haystack.exceptions.SearchFieldError)

标签 python autocomplete django-haystack whoosh

我正在尝试为只搜索单词的一部分(如果我没记错的话,根据 Haystack 文档称为 autocomplete)实现生成结果。

示例:

搜索 "gol"

结果 "goldfish"

我尝试了什么?

我按照step 1 of the docs中的要求做了,我在索引类中添加了以下行:

content_auto = indexes.EdgeNgramField(model_attr='content')

然后做了python manage.py rebuild_index .

重建索引却产生了错误 haystack.exceptions.SearchFieldError: The model '<Person: Reginald>' does not have a model_attr 'content'.Reginald作为我的索引表中的第一个条目和 Person作为我索引的模型。

现在我的模型确实没有名为 content 的字段但正如文档中所示,它不需要有这样的字段。

我正在使用 Whoosh 2.4.1 , Django-haystack 1.2.7Django 1.4 .

最佳答案

这就是我现在解决这个问题的方法。

代替:

content_auto = indexes.EdgeNgramField(model_attr='content')

使用:

content_auto = indexes.EdgeNgramField(use_template=True)

然后你可以为这些创建一个模板。例如,我的 catalog 应用程序中有一个 ItemIndex,我想在其中搜索 namedescription。因此,我在 templates/search/indexes/catalog/ 中创建了一个名为 item_content_auto.txt 的文件,其中包含以下内容:

{{ object.name }}
{{ object.description }}

这似乎按照我想要的方式运行。比 'content' 工作更乏味,但应该足够了。

关于python - Django-haystack:添加自动完成所需的 `content_auto` 行后,rebuild_index 失败(haystack.exceptions.SearchFieldError),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14479224/

相关文章:

git - 有没有办法让 git 根据缩短的版本自动完成命令?

django - 搜索结果因分页而失败

android - 如何制作REST API来查询干草堆elasticsearch?

python - static_rnn 和 dynamic_rnn 有什么区别?

python - 从日志文件转换矩阵

python - 如何根据多列的值拆分数据框

单击外部时 JQuery 自动完成关闭选项

python - 检查选择并与 python 列表进行比较

java - 自动完成 netbeans 的 JTextField

python - 使用 haystack 和 Whoosh