Ben*_*ey4 6 python autocomplete whoosh django-haystack
我正在尝试实现屈服结果,只搜索一个单词的一部分(autocomplete根据Haystack文档调用,如果我没有记错的话).
例:
搜索 "gol"
结果 "goldfish"
我试过了什么?
我按照文档的第1步中的要求做了,我在Index类中添加了以下行:
content_auto = indexes.EdgeNgramField(model_attr='content')
Run Code Online (Sandbox Code Playgroud)
然后呢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)
然后您可以为这些创建一个模板。例如,ItemIndex我的应用程序中有一个catalog,我想在其中搜索name和description。因此,我在templates/search/indexes/catalog/名为 的文件中创建了一个文件item_content_auto.txt,其中包含以下内容:
{{ object.name }}
{{ object.description }}
Run Code Online (Sandbox Code Playgroud)
这似乎正在按照我想要的方式运行。比工作时要乏味一点'content',但应该足够了。
| 归档时间: |
|
| 查看次数: |
1031 次 |
| 最近记录: |