Python 如何在django中执行此搜索逻辑

Python 如何在django中执行此搜索逻辑,python,django,Python,Django,我正在用django为我的页面编写一个小型搜索引擎 我的查询代码: sterm = request.GET.get('searchterm') books = Book.objects.filter(title__iregex=r"\y{0}\y".format(sterm)) 这段代码的一个问题是,如果我搜索“python测试”,它只会给我标题中有“python测试”的书。但我也需要那些标题中只有“python”或“test”的书。我知道,我可以使用Q。但我需要一些有效的查找,我在考虑以下逻

我正在用django为我的页面编写一个小型搜索引擎

我的查询代码:

sterm = request.GET.get('searchterm')
books = Book.objects.filter(title__iregex=r"\y{0}\y".format(sterm))
这段代码的一个问题是,如果我搜索
“python测试”
,它只会给我标题中有
“python测试”
的书。但我也需要那些标题中只有
“python”
“test”
的书。我知道,我可以使用
Q
。但我需要一些有效的查找,我在考虑以下逻辑:

sterms = sterm.split()
if len(sterms) == 1:
   books = Book.objects.filter(title__iregex=r"\y{0}\y".format(sterm))
else: 
   for each in sterms:
      ## how can I gather here all Q's?
   #then this?
   books = Book.objects.filter("gathered Q's with |")

如何收集
Q
过滤器,然后将其传递给query?我同意这种逻辑,还是有更有效、更酷的方法

您可以在中查看如何进行动态或组合查询

你需要这样做吗?不区分大小写的正则表达式查询非常慢


您的数据存储是否使用PostgreSQL?如果是这样,您可以研究全文索引功能。这将为您提供一种更快的方式来执行此类搜索。

您应该看看文档:我错过了粘贴另一个链接:p@limelights真棒,这就是我需要的,谢谢。是的,我正在使用postgresql。谢谢你的指导,我想我会拿这本全文索引谢谢