gpt4 book ai didi

python - Django ORM拆分名称和搜索

转载 作者:行者123 更新时间:2023-11-28 22:22:16 25 4
gpt4 key购买 nike

我有一个名为 Suburb 的模型。有一个名为名称的字段。

郊区的名称可以是多个单词,比如“East west country”。我想要所有部分单词以给定字符串开头的记录。

class Suburb(models.Model):
name = models.CharField(_('suburb name'), blank=False, max_length=200)

search_string = "we"

# Give me all records whose part words starts with "search_string"

Suburb.objects.filter(...) # with ignore case ???

Example
----------
1) "East west one"
2) "We east two"
3) "North south three"

result should be 1) and 2)

我有一个 pythonic 解决方案。但是它的性能很差。

数据库 = MySQL

提前致谢

最佳答案

无需参与的最佳 Django 解决方案 Full Text Search或者搜索引擎将使用 icontains

所以在你的情况下

Suburb.objects.filter(name__icontains=search_string)

编辑:每个单词的开头使用 iregex:

对于 mysql [[:<:]]表示词的开始

所以这样的事情就是解决方案

Suburb.objects.filter.(name__iregex=r'[[:<:]]' + re.escape(search_string)

另请注意,由于存在通配符正则表达式,因此以下解决方案无法扩展

关于python - Django ORM拆分名称和搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47784791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com