【发布时间】:2011-09-05 04:56:40
【问题描述】:
我正在尝试为产品构建过滤系统。产品有许多属性,包括价格、尺寸(厘米)和边数(# 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 美元的范围。
这是一个相当简单的案例,但搜索可能涉及任何属性。
我脑海中的算法正在为每个属性进行某种标准偏差计算,这将为您提供该属性与搜索条件的接近程度的“分数”,这些分数可以在产品中进行总结,以给出产品相关性的总分。这是在正确的轨道上吗?
我意识到这是一个相当复杂的问题,我真的只是在寻找一些指导而不是任何事情。
【问题讨论】:
-
我认为您的 A、B 和 C 混淆了。 B应该首先返回,因为它在价格范围内。 C 应返回第二个(超出范围 10 美元),然后是 A(超出范围 40 美元)。
-
哎呀...你是对的。我会进行编辑。
标签: php mysql database oracle postgresql