gpt4 book ai didi

sql - 按相关性查询和排序

转载 作者:行者123 更新时间:2023-11-29 12:38:24 25 4
gpt4 key购买 nike

我在这样的查询中有多个条件:

SELECT * FROM image WHERE name LIKE '%text%' AND group_id = 10 LIMIT 1

WHERE 语句由 3 个条件组成:

  • 文本匹配
  • 外键匹配

如果我想按相关性对结果进行排序,那么取决于:

  1. 文本的匹配程度
  2. 满足多少条件(例如文本匹配外键)

这是两个合而为一的问题,但我认为有时这些问题结合起来会派上用场。我指的是我以前的帖子 ( Way to try multiple SELECTs till a result is available? ) 提出的问题。

提前致谢!

最佳答案

要了解文本匹配的准确程度,您需要 fuzzystrmatch PostgreSQL 模块。它提供了 differencelevenshtein 函数,可以让您估计两个字符串之间的相似度。

然后,您可以使用以下条件构建查询:

    SELECT *
FROM image
WHERE name LIKE '%text%'
AND ( group_id = 10
OR second_field = 4
OR thirth_field = 5
)
ORDER BY ( (group_id=10)::int
+ (second_field=4)::int
+ (thirth_field=5)::int
) * weight_1
+ (strlen(name) - levenshtein('text',name)) * weight_2

您可以调整 weight_1weight_2 以优先考虑文本距离或满足条件的数量。

关于sql - 按相关性查询和排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14707799/

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