假设我有70万个具有某些属性的产品观察,我们称之为标签。
让我们说我们有userX。我想实现一个简单的基于内容的过滤方法:根据标签计数/相关性对产品进行排名。 所以我要说userX有一个偏好: - 黄色 - 价格(0-15) - 品牌名称
要获得建议,需要查看所有700.000个观察结果(可以通过标记在noSQL数据库规范化设置中完成,但是当涉及多个标记时仍然可以进行大量观察),并计算数量某个产品中存在的标签。
我可以使用哪种框架或方法快速完成此操作?即在几秒钟内得到结果?
我认为有些事情是:
答案 0 :(得分:1)
做产品"观察"包括用户购买/互动?如果是这样,在像neo4j这样的图形数据库中,你可以像这样建模数据:
此处您有购买产品的用户,其中该产品具有一个或多个标记属性。要生成基于内容的推荐,您可以使用如下的Cypher查询:
MATCH (u:User {name: "Bob"})-[:PURCHASED]->(p:Product)
MATCH (p)-[:TAGGED]->(t:Tag)
MATCH (t)<-[:TAGGED]-(rec:Product) WHERE NOT (u)-[:PURCHASED]->(rec)
RETURN rec, count(*) AS weight ORDER BY weight DESC
此查询基本上说:&#34;查找Bob已购买的所有产品。找到这些产品的标签。现在找到具有Bob未购买的相同标签的产品。向Bob推荐这些产品,首先显示重叠标签数量最多的产品。&#34;
有关此内容的更多信息,请in this video和in this tutorial。