Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django PostgreSQL-单词模糊搜索_Python_Django_Postgresql_Fuzzy Search_Django Postgresql - Fatal编程技术网

Python Django PostgreSQL-单词模糊搜索

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)

我正在使用Django的内置
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揭露它的问题,我不知道。