哪些框架/ db为基于内容的过滤提供了一个很好的解决方案?

时间:2016-02-07 23:56:07

标签: database-design neo4j recommendation-engine database nosql

假设我有70万个具有某些属性的产品观察,我们称之为标签。

让我们说我们有userX。我想实现一个简单的基于内容的过滤方法:根据标签计数/相关性对产品进行排名。 所以我要说userX有一个偏好: - 黄色 - 价格(0-15) - 品牌名称

要获得建议,需要查看所有700.000个观察结果(可以通过标记在noSQL数据库规范化设置中完成,但是当涉及多个标记时仍然可以进行大量观察),并计算数量某个产品中存在的标签。

我可以使用哪种框架或方法快速完成此操作?即在几秒钟内得到结果?

我认为有些事情是:

  • pure nodejs server
  • 纯python服务器
  • neo4j图数据库,但不确定如何在此设置中实现关系?

1 个答案:

答案 0 :(得分:1)

做产品"观察"包括用户购买/互动?如果是这样,在像neo4j这样的图形数据库中,你可以像这样建模数据:

enter image description here

此处您有购买产品的用户,其中该产品具有一个或多个标记属性。要生成基于内容的推荐,您可以使用如下的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 videoin this tutorial