0

我正在尝试使用 Solr 和HAYSTACK_INCLUDE_SPELLING = True.

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

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

谢谢 :-)

4

3 回答 3

6

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

{{ sqs.spelling_suggestion }}

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

更多细节。

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

也许你忘了做

python manage.py update_index

添加 lorem 注释后。

于 2010-05-02T10:13:15.333 回答
1

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

看:

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

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

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

于 2011-03-21T21:51:07.553 回答
0

我发现上述解决方案仅在我们扩展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

于 2019-08-27T15:47:45.390 回答