什么 frameworks/db 为基于内容的过滤提供了一个很好的解决方案?

What frameworks/db offer a good solution for content-based filtering?

假设我对具有特定属性的产品进行了 700 000 次观察,我们称它们为标签。

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

要获得推荐,需要遍历所有 700.000 个观察(可以通过标签在 noSQL 数据库规范化设置中完成,但当涉及多个标签时仍然可以是很多观察),并计算特定产品中存在的标签数量。

我可以使用什么框架或方法来快速完成此操作? IE。在几秒钟内得到结果?

我认为的一些事情是:

产品 "observations" 是否包含用户 purchases/interactions?如果是这样,在像 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

这个查询本质上说:"Find all the products that Bob has purchased. Find the tags for those products. Now find products with those same tags that Bob has not purchased. Recommend these products to Bob, showing the products with the highest number of overlapping tags first."

有关此内容的更多信息in this video and in this tutorial