gpt4 book ai didi

java - 在数据库中存储和搜索集(具有许多可能的值)(来自 Java)

转载 作者:搜寻专家 更新时间:2023-10-30 20:55:15 24 4
gpt4 key购买 nike

问题是如何存储(和搜索)用户喜欢和不喜欢的一组项目。虽然每个用户在他们的集合中可能有 2-100 个项目,但项目的可能值数以万计(并且还在扩大)。

与每个项目相关联的是从 10(喜欢)到 0(中立)到 -10(不喜欢)的值。

那么给定具有特定集合的用户,如何找到具有相似集合的用户(比如交叉点上的重叠百分比)?理想情况下,可以通过只包含喜欢/不喜欢值在一定百分比内的项目的过滤器来减少匹配集。

我不知道如何为此使用键/值或列存储,并且为每个用户遍历项目关系表似乎会消耗太多资源。将集合制作成文档似乎会失去清晰度。

Web 应用程序使用 Java。我搜索了 ORMS、NoSQL、ElasticSearch 以及相关的工具和数据库。有什么建议吗?

最佳答案

好吧,这似乎实际存储不是问题,但您想根据喜欢/不喜欢制作一个建议系统。

重点是您可以随心所欲地存储内容,即使在 SQL 中,大多数 SQL RDBMS 都足以满足您的数据存储需求,但您当然也可以使用任何您想要的其他内容。关键是,没有任何 SQL 解决方案(据我所知)会给你带来好的结果。您正在寻找的是一个基于人工智能的建议系统,而分布式系统的最佳建议系统是 Apache Mahout,它们实现了许多库。 .

根据我目前对它的了解,它基本上可以开箱即用。我知道它基于 Hadoop 和 Yarn,但我不确定您是否可以从任何地方导入数据,或者是否需要将其保存在 HDFS 中。

另一种选择是自己实现机器学习算法,该算法只能在一台机器上运行,但您不会在任何 sql 系统中通过简单查询获得所需的结果。

在大多数情况下,您需要机器学习算法和一些数字的查询是不够的,原因是您所面对的用户的多样性......如果您有一个用户 B,他喜欢/不喜欢他所拥有的一切与用户 A 的方式相同——但覆盖率仅为 15%。另一方面,您的用户 C 与 A 非常相似(虽然不是 100%,方向几乎相同)并且 C 标记了超过 90% 的内容,A 也标记了这些内容。在这种情况下,C 比 B 更接近 A,但 B 具有 100% 的覆盖率。在许多其他场景中,最简单的百分比是不够的,这就是为什么许多拥有建议系统(亚马逊、Netflix、Spotify 等)的公司使用 Apache Mahout 和类似系统来完成这些任务的原因。

关于java - 在数据库中存储和搜索集(具有许多可能的值)(来自 Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24092079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com