2010-08-26 73 views
2

我有一个充满两种不同类型用户(导师和受访者)的数据库,我希望第二组(导师)能够为第一组(导师)中的人员“搜索”谁符合他们的个人资料导师和受指导者可以随时进入并更改其个人资料中的项目。与当前数据匹配的用户

目前,我正在使用Apache Mahout进行用户匹配(recommender.mostSimilarIDs())。我遇到的问题是每次任何人搜索时都必须重新加载用户数据。这本身并不需要那么长时间,但是当Mahout处理数据时,它似乎需要很长时间(对于3000名导师和3000名受访者,需要14分钟)。处理后,匹配只需几秒钟。在处理过程中(“处理2248个用户”),我也一遍又一遍地得到相同的INFO消息,同时查看代码显示消息应该每10000个用户才输出。

我使用GenericUserBasedRecommender和GenericDataModel,以及NearestNUserNeighborhood,AveragingPreferenceInferrer和PearsonCorrelationSimilarity。我从数据库加载指导者,将指导者添加到POJO列表中并将其转换为FastByIDMap以提供给DataModel。

有没有更好的方法来做到这一点?产品所有者需要每次搜索都需要数据。

回答

1

(我的作者。)

你不应该需要问它每次都重新加载数据,为什么?

14分钟听起来方式太长,也加载这么少量的数据太多了,出了点问题。您可以通过[email protected]了解更多信息。

您正在看到来自DataModel的日志消息,您可以在选定的日志记录系统中禁用该日志消息。它打印一个最终计数。这是没有什么可担心的。

我会建议你不要使用PreferenceInferrer,除非你完全知道你想要它。你真的有评分吗?如果不是,我可能会建议LogLikelihoodSimilarity