我正试图在我的Django项目中做一个TrigramSimilarity搜索。
在django文档中,我做了如下的导入:from django.contrib.postgres.search import TrigramSimilarity
;
我还在settings.py
文件的INSTALLED_APPS
中添加了'django.contrib.postgres'
错误不会立即出现:我收到这个错误Django TrigramSimilarity search gives no such function: SIMILARITY
一旦我用查询集做了一些事情。例如,如果我想做一个简单的操作,如print(),就会出现错误。下面的代码是我所做的
articles = Article.objects.annotate(
similarity=TrigramSimilarity('name', search_str),
).filter(similarity__gt=0.3).order_by('-similarity')
print(articles) #that line causes the error (no such function: SIMILARITY)
我真的搜索了所有的东西,但似乎没有人有这个错误之前。我完全按照文件上说的做了->在这里
也许有另一种方法来做TrigramSimilarity,但正如我在阅读文档之前所说的。
您应该添加pg_trgm扩展到您的postgres。之后postgres就能理解TrigramSimilarity了
我解决了手动创建一个函数来复制Trigraman Similarity Search。