gpt4 book ai didi

sql - 标签/关键字匹配的最佳解决方案是什么?

转载 作者:行者123 更新时间:2023-12-04 21:01:05 24 4
gpt4 key购买 nike

我正在寻找数据库中不同记录之间关键字匹配的最佳解决方案。这是一个经典的问题,我发现了类似的问题,但没有具体的问题。

我已经完成了全文搜索、连接和子查询、临时表等,所以我真的很想看看你们是如何解决这样一个常见问题的。

所以,假设我有两张 table ; ProductsKeywords它们与第三个表 Products_Keywords 相关联在经典的多对多关系中。

如果我展示一个 Product记录在页面上并想显示前 n 个相关产品,最好的选择是什么?

我们应该考虑到记录可能会共享多个关键字,并且这一事实应该确定最相关产品的排序。

我也对其他想法持开放态度,但由于性能原因,T-SQL 将是更可取的解决方案。

最佳答案

我的第一个镜头是这样的:

SELECT
P.product_id,
COUNT(*)
FROM
Product_Keywords PK1
INNER JOIN Product_Keywords PK2 ON
PK2.keyword_id = PK1.keyword_id
INNER JOIN Products P ON
P.product_id = PK.product_id
WHERE
PK1.product_id = @product_id
GROUP BY
P.product_id
ORDER BY
COUNT(*) DESC

Product_Keywords 到 Product_Keywords(PK2 到 PK1)的连接可能很粗糙,所以我不能谈论性能。这是我要开始的地方,然后看看优化。

作为 Assaf 评论的后续行动,需要考虑的一件事是您可以向 Product_Keywords 和 SUM(PK1.weight) + SUM(PK2.weight) 添加“权重”以进行排名。只是一个想法。

编辑:详细说明权重……您可能决定要允许对关键字进行加权。但是,用于确定权重的实际方法将是一项业务决策,因此我无法真正为您提供太多指导。

举个例子,这个问题是关于“编程”、“关键字匹配”和“SQL”的。编程是非常通用的,所以如果两个问题有共同点,它仍然可能并不意味着它们是相关的,所以也许你只将其加权为 1。SQL 更具体一点,因此你可以将其加权为 5。关键字匹配既是问题的主要焦点,又非常具体,所以你可以用 10 来加权。

这当然只是一个例子,正如我所说,权重的确切确定以及您如何评分取决于具体的业务。您可能会认为匹配关键字的数量比权重更重要,因此可能权重仅用作决胜局等。HTH。

关于sql - 标签/关键字匹配的最佳解决方案是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/615098/

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