我有一个问题,我不知道该如何解决。
我有一个简单的数据库,其中我存储产品,用户,并按用户购买的产品。每种产品都有名称、类别和价格。
这样的算法现实吗?我可以想到一些指标,比如将所有类别分组到语义上“相似”的桶中,并计算与之的距离,但我不确定当有多个标准时,我应该如何对它们进行排序。
也许我应该给每个标准一个重要性因子,结果是距离的乘积*这个因子?
发布于 2017-11-27 06:15:33
您可以做的是为数据库中的每个产品创建2个额外的字段。例如,在名为Type的第一个字段中,您可以说"RC“,在第二个名为similar的字段中,您可以说,"RC,Radio,Electronics,Remote,Model”,然后在稍后的SQL查询中,您可以告诉它选择在类型和相似类型之间匹配的产品。这提供了一个不仅仅依赖于产品名称的系统,因为这些名称可能具有欺骗性。它将仍然使用LIKE命令,但它会更准确,因为它是由您预先定义的,即哪些其他产品与此产品相似。
根据你数据库的大小,我相信这是最简单的选择。
发布于 2017-11-27 06:22:24
我在MySql上使用这个来做一些加权搜索:
SELECT *,
IF(
`libelle` LIKE :startSearch, 30,
IF(`libelle` LIKE :fullSearch, 20, 0)
)
+ IF(
`description` LIKE :startSearch, 10,
IF(`description` LIKE :fullSearch, 5, 0)
)
+ IF(
`keyword` LIKE :fullSearch, 1, 0
)
AS `weight`
FROM `t`
WHERE (
-- at least 1 match
`libelle` LIKE :fullSearch
OR `description` LIKE :fullSearch
OR `keyword` LIKE :fullSearch
)
ORDER BY
`weight` DESC
/*
'fullSearch'=>'%'.str_replace(' ', '_', trim($search)).'%',
'startSearch'=>str_replace(' ', '_', trim($search)).'%',
*/https://stackoverflow.com/questions/47501396
复制相似问题