【问题标题】:django-haystack: how to access the spelling suggestions on the template?django-haystack:如何访问模板上的拼写建议?
【发布时间】:2010-05-01 16:09:29
【问题描述】:

我正在尝试使用 Solr 和 HAYSTACK_INCLUDE_SPELLING = True 的 django-haystack。

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

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

谢谢:-)

【问题讨论】:

    标签: python django solr django-haystack


    【解决方案1】:

    如果您在模板中设置了搜索查询,您可以这样做:

    {{ sqs.spelling_suggestion }}
    

    看: http://docs.haystacksearch.org/dev/searchqueryset_api.html#spelling-suggestion

    了解更多详情。

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

    也许你忘了做

    python manage.py update_index
    

    在你添加了 lorem 注释之后。

    【讨论】:

    • 我忘记更新索引了。现在可以用了,谢谢。 :-)
    • 确保你在sqs中没有任何额外的过滤。 sqs.filter(permission=True),例如会返回你没想到的结果。只应使用需要建议的查询。例如:query = request.GET.get('q', '') / sqs = SearchQuerySet().filter(content=AutoQuery(query)) /Suggestion = sqs.spelling_suggestion() /
    【解决方案2】:

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

    见:

    https://github.com/toastdriven/django-haystack/blob/master/haystack/views.py#L118

    ...查看模板上下文中可用的内容。

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

    【讨论】:

      【解决方案3】:

      我发现上述解决方案仅在我们扩展 haystack.views.SearchView 时才有效。基于 SearchView 的新通用视图,即haystack.generic_views.SearchView 似乎没有将suggestion 字段添加到上下文中,我们将无法访问此上下文变量{{ 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
      
      

      将视图添加到 urls.py

      urlpatterns = [
          path('search/', MySearchView.as_view(), name='haystack_search'),
      

      然后在search.html中访问上下文变量为{{ spell_suggestion }}

      希望这会有所帮助:)

      参考:https://django-haystack.readthedocs.io/en/v2.4.1/views_and_forms.html#upgrading

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-26
        • 1970-01-01
        • 2015-08-22
        • 2015-03-02
        • 1970-01-01
        • 1970-01-01
        • 2019-05-24
        • 2015-10-27
        相关资源
        最近更新 更多