Python 如何在django&中实现不区分拼写的搜索;PostgreSQL?

Python 如何在django&中实现不区分拼写的搜索;PostgreSQL?,python,django,trigram,Python,Django,Trigram,我想要实现的是,若用户输入搜索“laptp”,那个么数据库应该返回带有实际单词“laptp”的结果。类似地,若用户输入“ambroidery”,那个么数据库应该返回包含字符串的“刺绣”和“embroidred”字的结果。希望天气转晴 所以我尝试的是,我浏览了整个django文档,找到的最接近的东西是“三角图相似性”搜索。我遵循文档并尝试了以下方法: data = 'silk' data= Product.objects.annotate( similarity=TrigramSimilarit

我想要实现的是,若用户输入搜索“laptp”,那个么数据库应该返回带有实际单词“laptp”的结果。类似地,若用户输入“ambroidery”,那个么数据库应该返回包含字符串的“刺绣”和“embroidred”字的结果。希望天气转晴

所以我尝试的是,我浏览了整个django文档,找到的最接近的东西是“三角图相似性”搜索。我遵循文档并尝试了以下方法:

data = 'silk'

data= Product.objects.annotate(
similarity=TrigramSimilarity('description', data)).filter(similarity__gt=0.3).order_by('-similarity')
在我的数据库中,我有
产品
,它们的描述包含单词“silky”,但每次运行此查询时,我都会得到空查询集。即使当我将数据值设置为“丝般光滑”时,我仍然得到了空的查询集


因此,首先建议我,对于我想要实现的目标,这是否是正确的方法;其次,如果是,那么它为什么返回空查询集?

您是否在postgres中启用了pg_trgm扩展?如果删除过滤器,您会得到什么?你首先得到你想要的行了吗?@IainShelvington当我移除过滤器时,是的,前两行是必需的,但其余的也是那些不包含指定单词的行。过滤器的实际逻辑是什么?你能看到每行的
相似性
的值吗?这是一个合理的值吗?你可以降低阈值吗?你在postgres中启用了pg_trgm扩展吗?如果你删除了过滤器,你会得到什么?你首先得到你想要的行了吗?@IainShelvington当我移除过滤器时,是的,前两行是必需的,但其余的也是那些不包含指定单词的行。过滤器的实际逻辑是什么?你能看到每行的
相似性
的值吗?这是一个合理的值吗?你可以降低阈值吗?