【问题标题】:Best option for alternate/suggested search in DjangoDjango 中替代/建议搜索的最佳选择
【发布时间】:2014-09-08 12:05:20
【问题描述】:

我有一个 Django 应用程序,它从模型 Classified 中搜索数据,并使用基于输入项的简单查询集显示它们。这非常有效,我对这种方法没有任何抱怨。

但是,如果有人输入了不返回任何数据的字词,我想提供一个带有备用/建议搜索的选项。

例如:有人搜索不返回数据的“救护车服务”。我想建议“救护车”或“服务”作为替代搜索选项,这可能会根据模型中存在的数据从模型中返回数据。

我在 Google 上搜索了 suggested search in django,它为我提供了 Haystack/弹性搜索等选项,我不确定这些选项是否真的需要,因为搜索只涉及一个模型。

注意:SO 告诉我,我的问题可能已结束,因为它是主观的。如果是这样,请建议我可以将其移动到哪里。谢谢!

【问题讨论】:

    标签: python django


    【解决方案1】:

    这只是一个想法,但可能对你有用:

    1. 用户输入搜索数据:“救护车服务”

    2. 如果视图内的查询没有返回任何内容,请使用您选择的替代搜索数据重定向到同一视图,比如说“救护车”,以及一个表示您正在执行建议搜索的视图的标志值。

    你必须考虑两件事:

    1. 如果备用搜索也不返回任何内容怎么办?您必须在此处设置递归限制。

    2. 我将如何选择备用搜索的数据?好吧,那是关于完全不同主题的另一个问题。

    这是代码中的这个想法:

    def search(request, data, alternate=False, recursion_level=3):
    
        result = Classified.objects.filter(some_filed=data)
    
        if 0 == result.count() and 0 != recursion_level: # Conditions needed for perform alternate search.
    
            new_data = select_new_data(data)             # The logic inside this function is up to you.
    
            r_level = recursion_level - 1        # Decreas recursion level.
    
            return redirect('search', alternate=True, recursion_level=r_level)  # Redirecting using view name, you can use others
                                                                        # forms of redirection see link below for visit 
                                                                        # the Djando redirect API doc.
        else:
            return_data = {}
    
            if alternate:
                # You can use this flag in order to reflect
                # to the user you have performed an alternate search. 
                # Example:
                return_data["alternate"] = True
    
    
            # Build your return data.
            # and render.
    
            #return render_to_template()
    

    Django 重定向文档:redirect

    【讨论】:

      【解决方案2】:

      Haystack 确实是一个不错的选择,here 你会发现如何给出“拼写建议”,你可以看一个例子in this OS question/answer

      不管你只有一个模型,这个工具真的很棒,安装/设置/使用简单,非常灵活。

      也许this 也有帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多