我在django中编写一个简单的应用程序,用于搜索数据库中的记录。 用户在搜索字段中输入名称,该查询用于使用特定字段(如
)过滤记录Result = Users.objects.filter(name__icontains=query_from_searchbox)
E.g。 - 数据库由名字 - Shiv,Shivam,Shivendra,Kashiva,Varun ......等组成。
搜索查询'shiv'按以下顺序返回记录 -
Kahiva,Shivam,Shiv和Shivendra
按主键排序。
我的问题是如何实现订单 -
Shiv,Shivam,Shivendra和Kashiva。
我的意思是最相关的,然后是较不相关的结果。
答案 0 :(得分:0)
使用标准Django不可能做到这一点,因为这种类型的东西超出了范围和范围。特定于搜索应用程序。
当您与ORM交互时,请考虑您对数据库的实际操作 - 它只是SQL查询。
如果要重新排列结果,则必须操作查询集,检查完全匹配,然后使用正则表达式检查部分匹配。
搜索并不是最适合ORM的东西,因此您可以考虑查看特定的搜索应用程序。他们通常会维护一个索引,这可以避免数据库命中,也可能提供一个百分比匹配顺序,就像你正在寻找的那样。
一个好的起点可能是Haystack