按相关性进行查询和排序

问题描述 投票:1回答:1

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

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

WHERE语句包含3个条件:

  • 文字匹配
  • 外键匹配

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

  1. 如何精确匹配文本
  2. 完全满足多少条件(例如,文本匹配外键)] >>
  3. 这是两个问题合而为一,但我认为有时将它们组合起来会很方便。借此,我指的是我的前任职位(Way to try multiple SELECTs till a result is available?)引起的问题。

提前感谢!

我在这样的查询中有多个条件:SELECT * FROM image WHERE name LIKE'%text%'AND group_id = 10 LIMIT 1 WHERE语句由3个条件组成:文本匹配外部匹配... ...> >

要知道文本如何精确匹配,您需要fuzzystrmatch PostgreSQL模块。它提供fuzzystrmatchdifference等功能,可以估算两个字符串之间的相似性。

然后,您可以在某些条件下构建查询,例如:

levenshtein

您可以调整 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_1以优先选择文字距离或满足的条件数。

sql postgresql postgresql-performance
1个回答
4
投票

要知道文本如何精确匹配,您需要fuzzystrmatch PostgreSQL模块。它提供fuzzystrmatchdifference等功能,可以估算两个字符串之间的相似性。

© www.soinside.com 2019 - 2024. All rights reserved.