- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试为只搜索单词的一部分(如果我没记错的话,根据 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.7
和 Django 1.4
.
最佳答案
这就是我现在解决这个问题的方法。
代替:
content_auto = indexes.EdgeNgramField(model_attr='content')
使用:
content_auto = indexes.EdgeNgramField(use_template=True)
然后你可以为这些创建一个模板。例如,我的 catalog
应用程序中有一个 ItemIndex
,我想在其中搜索 name
和 description
。因此,我在 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/
我正在尝试为只搜索单词的一部分(如果我没记错的话,根据 Haystack 文档称为 autocomplete)实现生成结果。 示例: 搜索 "gol" 结果 "goldfish" 我尝试了什么? 我按
我是一名优秀的程序员,十分优秀!