首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQL中创建“您可能感兴趣的产品”算法?

在SQL中创建“您可能感兴趣的产品”算法?
EN

Stack Overflow用户
提问于 2017-11-27 05:52:30
回答 2查看 190关注 0票数 1

我有一个问题,我不知道该如何解决。

我有一个简单的数据库,其中我存储产品,用户,并按用户购买的产品。每种产品都有名称、类别和价格。

这样的算法现实吗?我可以想到一些指标,比如将所有类别分组到语义上“相似”的桶中,并计算与之的距离,但我不确定当有多个标准时,我应该如何对它们进行排序。

也许我应该给每个标准一个重要性因子,结果是距离的乘积*这个因子?

EN

回答 2

Stack Overflow用户

发布于 2017-11-27 06:15:33

您可以做的是为数据库中的每个产品创建2个额外的字段。例如,在名为Type的第一个字段中,您可以说"RC“,在第二个名为similar的字段中,您可以说,"RC,Radio,Electronics,Remote,Model”,然后在稍后的SQL查询中,您可以告诉它选择在类型和相似类型之间匹配的产品。这提供了一个不仅仅依赖于产品名称的系统,因为这些名称可能具有欺骗性。它将仍然使用LIKE命令,但它会更准确,因为它是由您预先定义的,即哪些其他产品与此产品相似。

根据你数据库的大小,我相信这是最简单的选择。

票数 1
EN

Stack Overflow用户

发布于 2017-11-27 06:22:24

我在MySql上使用这个来做一些加权搜索:

代码语言:javascript
复制
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)).'%',
*/
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47501396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档