2

我有一个数据库,其中包含两种不同类型的用户(Mentors 和 Mentees),我希望第二组(Mentees)能够“搜索”第一组(Mentors)中与他们的个人资料相匹配的人。导师和学员都可以随时进入并更改其个人资料中的项目。

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

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

有没有更好的方法来做到这一点?产品负责人需要为每次搜索提供最新的数据。

4

1 回答 1

1

(I'm the author.)

You shouldn't need to ask it to reload the data every time, why's that?

14 minutes sounds way, way too long to load such a small amount of data too, something's wrong. You might follow up with more info at user@mahout.apache.org.

You are seeing log messages from a DataModel, which you can disable in your logging system of choice. It prints one final count. This is nothing to worry about.

I would advise you against using a PreferenceInferrer unless you absolutely know you want it. Do you actually have ratings here? I might suggest LogLikelihoodSimilarity if not.

于 2010-08-30T12:43:04.560 回答