Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django haystack:如何访问模板上的拼写建议?_Python_Django_Solr_Django Haystack - Fatal编程技术网

Python django haystack:如何访问模板上的拼写建议?

Python django haystack:如何访问模板上的拼写建议?,python,django,solr,django-haystack,Python,Django,Solr,Django Haystack,我正在用Solr和haystack_INCLUDE_SPELLING=True尝试django haystack 如何访问默认SearchView生成的模板上的拼写建议 编辑:另一个问题:拼写建议能否从数据库中找到单词?例如,使用haystack文档中的默认注释模型和默认的SearchView,当数据库包含名为Lorem ipsum的注释时,搜索单词Lorm时没有拼写建议。这正常吗 谢谢:-如果您在模板中设置了搜索查询,您可以执行以下操作: {{ sqs.spelling_suggestion

我正在用Solr和haystack_INCLUDE_SPELLING=True尝试django haystack

如何访问默认SearchView生成的模板上的拼写建议

编辑:另一个问题:拼写建议能否从数据库中找到单词?例如,使用haystack文档中的默认注释模型和默认的SearchView,当数据库包含名为Lorem ipsum的注释时,搜索单词Lorm时没有拼写建议。这正常吗


谢谢:-

如果您在模板中设置了搜索查询,您可以执行以下操作:

{{ sqs.spelling_suggestion }}
看看:

更多细节

为了让haystack找到拼写建议,搜索模板应该包含您要查找的字段。因此,如果搜索模板中包含{{object.title}},则应该选择拼写建议

也许你忘了做

python manage.py update_index
添加lorem注释后。

{{suggestion}}如果使用默认的SearchView,就足够了

见:

…以查看模板上下文中的可用内容


Hassan正确地指出,您必须更新/重建索引,并且您需要搜索模板中的正确字段。

我发现,只有在扩展haystack.views.SearchView时,上述解决方案才有效。新的基于泛型视图的SearchView,即haystack.generic_views.SearchView似乎没有将建议字段添加到上下文中,我们将无法访问此上下文变量{suggestion}

我们需要手动将其添加到上下文中,如下所示:

from haystack.generic_views import SearchView

# Custom view.
class MySearchView(SearchView):

    template_name = 'search/search.html'
    queryset = SearchQuerySet().all()
    form_class = SearchForm  

    def get_context_data(self, *args, **kwargs):
        context = super(MySearchView, self).get_context_data(*args, **kwargs)

        # Add any additional context data we need to display in forms
        spell_suggestion = self.get_form().get_suggestion()
        context['spell_suggestion'] = spell_suggestion

        return context

将视图添加到url.py

urlpatterns = [
    path('search/', MySearchView.as_view(), name='haystack_search'),
然后在search.html中访问上下文变量{{spell_suggestion}

希望这有助于:


参考资料:

我忘了更新索引。现在开始工作了,谢谢-确保在sqs中没有任何额外的筛选。例如,sqs.filterpermission=True将返回您意想不到的结果。只应使用需要建议的查询。例如:query=request.GET.GET'q',/sqs=SearchQuerySet.filtercontent=autoqueryqueryquery/suggestion=sqs.spelling\u suggestion/