我有一个包含两种不同类型的用户(导师和学员)的数据库,我希望第二组(学员)能够“搜索”第一组(导师)中与其个人资料匹配的人。导师和学员都可以随时进入并更改其个人资料中的项目。
目前,我使用 Apache Mahout 进行用户匹配 (recommender.mostSimilarIDs())。我遇到的问题是每次有人搜索时我都必须重新加载用户数据。就其本身而言,这并不需要那么长时间,但是当 Mahout 处理数据时,似乎需要很长的时间(3000 名导师和 3000 名受训者需要 14 分钟)。处理后,匹配只需几秒钟。我还在处理时一遍又一遍地收到相同的 INFO 消息(“已处理 2248 个用户”),同时查看代码显示该消息只应每 10000 个用户输出一次。
我使用的是 GenericUserBasedRecommender 和 GenericDataModel,以及 NearestNUserNeighborhood、AveragingPreferenceInferrer 和 PearsonCorrelationSimilarity。我从数据库加载导师,将受训者添加到 POJO 列表中,并将它们转换为 FastByIDMap 以提供给 DataModel。
有更好的方法来做到这一点吗?产品负责人需要每次搜索的数据都是最新的。
(我是作者。)
您不应该每次都要求它重新加载数据,为什么呢?
14 分钟听起来太长了,加载这么少量的数据也太长了,出了问题。您可以通过以下网址跟进更多信息[电子邮件受保护] /cdn-cgi/l/email-protection.
您正在看到来自以下位置的日志消息DataModel
,您可以在您选择的日志系统中禁用它。它打印一个最终计数。这没什么好担心的。
我建议你不要使用PreferenceInferrer
除非你绝对知道你想要它。你们这里真的有评分吗?我可能会建议LogLikelihoodSimilarity
if not.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)