gpt4 book ai didi

python - Django/Postgres - 没有函数匹配给定的名称和参数类型

转载 作者:行者123 更新时间:2023-11-29 13:18:03 27 4
gpt4 key购买 nike

我正在尝试在我的 Django 和 Postgresql 项目中创建一个搜索系统,但是当我尝试进行查询时,我一直遇到错误。

每当我在 shell 中尝试这些命令时:

vector = SearchVector('title','tags')
query = SearchQuery('book') | SearchQuery('harry')

My_Library.objects.annotate(similarity=TrigramSimilarity(vector,test),).filter(similarity__gt=0.3).order_by('-similarity')

我得到错误:

“没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。”

一段时间以来,我一直在测试其他选项,而我能够成功无误地通过搜索查询的唯一方法是使用两个字符串代替 queryvector .

My_Library.objects.annotate(similarity=TrigramSimilarity('title','my search query'),).filter(similarity__gt=0.3).order_by('-similarity')

这将成功通过我的搜索,没有错误。

为什么会出现此错误,我该如何解决?

我的代码一直基于这个 Full Text Search文档

最佳答案

TrigramSimilarity 接受 2 个 strings 作为参数

您正在尝试将 SearchVectorSearchQuery 传递给它。那行不通

如果您想通过多个标签进行搜索,您可能需要使用 | 聚合多个相似性查询,然后根据相似性进行排序,例如:

from django.db.models import Q

My_Library.objects.annotate(
Q(similarity=TrigramSimilarity('title','my search query'),)) |
Q(similarity=TrigramSimilarity('title','my search query'),))
).filter(similarity__gt=0.3).order_by('-similarity')

关于Q的更多细节 https://docs.djangoproject.com/en/1.11/ref/models/querysets/#q-objects

关于python - Django/Postgres - 没有函数匹配给定的名称和参数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46248886/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com