gpt4 book ai didi

php - SQL 查找接近的匹配项

转载 作者:搜寻专家 更新时间:2023-10-30 20:00:18 24 4
gpt4 key购买 nike

我正在尝试为产品构建一个过滤系统。产品有很多属性,包括价格、尺寸(厘米)和(# of)面。我想构建一个 SQL 查询,它始终返回 ALL 产品,但根据它们与搜索条件的接近程度对它们进行排序。

例如,假设我有以下产品:

产品 A 价格:250 尺码:50 边数:4

产品 B 价格:300 尺码:60 侧面:3

产品 C 价格:200 尺码:60 边数:5

搜索条件为:

价格:210 - 260 美元

我希望它返回:产品A、产品C、产品B

A 是第一个,因为它符合所有搜索条件。 C 领先于 B,因为 200 美元比 300 美元更接近 210-260 美元的范围。

这是一个相当简单的案例,但搜索可能涉及任何属性。

我头脑中的算法正在对每个属性进行某种标准偏差计算,这将为您提供该属性与搜索条件的接近程度的“分数”,这些分数可以在产品中求和以给出产品相关性的总分。这条路走对了吗?

我意识到这是一个相当复杂的问题,我真的只是在寻找一些指导。

最佳答案

您基本上必须为每一行想出一个“距离”函数,如果所有条件都匹配则返回 0,否则返回一些正值表示接近程度。每个不同的列都必须有一些权重,因为偏离 1 美元并不像偏离 1 个边那么远。对于价格,如果它低于 210,则未加权距离将为(210 - 价格),如果价格高于 260,则价格列的未加权距离将为(价格 - 260)。然后您可以将加权距离 w1 * price_distance + w2 * size_distance + s3 * sides_distance 相加。然后您可以按距离进行订购。

关于php - SQL 查找接近的匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6183175/

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