Django-PostgreSQL单词模糊搜索

2024-05-23 23:38:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Django的内置的trigram_similar查找和TrigramSimilarity类来创建一个使用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}
    )

Tags: django标题fieldfieldsreturn文章filter内置