Python Django PostgreSQL-单词模糊搜索
我正在使用Django的内置Python Django PostgreSQL-单词模糊搜索,python,django,postgresql,fuzzy-search,django-postgresql,Python,Django,Postgresql,Fuzzy Search,Django Postgresql,我正在使用Django的内置trigram\uSimular查找和TrigramSimulation类使用PostgreSQL数据库创建模糊搜索。这样,我就可以过滤文章的标题。问题是,这个过滤器基于整个标题。我想过滤它也对部分的标题 示例: 文章标题:“我们是世界|这是有史以来最好的文章” 我的搜索:“我们” 在本例中,我的函数不返回任何内容,但我希望它返回本文。我该怎么做 这是我使用的代码: def search(qs, term, fields=["title"], treshold=.3)
trigram\uSimular
查找和TrigramSimulation
类使用PostgreSQL数据库创建模糊搜索。这样,我就可以过滤文章的标题。问题是,这个过滤器基于整个标题。我想过滤它也对部分的标题
示例:
文章标题:“我们是世界|这是有史以来最好的文章”
我的搜索:“我们”
在本例中,我的函数不返回任何内容,但我希望它返回本文。我该怎么做
这是我使用的代码:
def search(qs, term, fields=["title"], treshold=.3):
if len(fields) >= 2:
return qs.annotate(
similarity=Greatest(
*[TrigramSimilarity(field, term) for field in fields]
)
).filter(similarity__gte=treshold).order_by("-similarity")
return qs.filter(
**{"{}__trigram_similar".format(fields[0]): term}
)
我认为问题在于,你使用的是三元相似性和两个字母的单词。如果你试着用一个三个字母的单词来做这件事,也许会奏效?不,不会。当我输入“world”或“are the”时,我仍然没有得到任何结果。最新版本的PosgreSQL提供了单词相似性函数(>或>>)。所以这只是让Django揭露它的问题,我不知道。