2つの異なるタイプのユーザー(メンターとメンティー)でいっぱいのデータベースがあります。これにより、2番目のグループ(メンティー)が最初のグループ(メンター)のプロファイルに一致するユーザーを「検索」できるようにします。メンターとメンティーはどちらも、いつでも自分のプロファイルにアクセスしてアイテムを変更できます。
現在、ユーザーマッチング(recommender.mostSimilarIDs())にApacheMahoutを使用しています。私が遭遇している問題は、誰かが検索するたびにユーザーデータをリロードする必要があるということです。それ自体はそれほど時間はかかりませんが、Mahoutがデータを処理するときは、非常に長い時間がかかるようです(3000人のメンターと3000人のメンティーの場合は14分)。処理後、マッチングはほんの数秒で完了します。また、処理中に同じINFOメッセージが何度も表示されます(「処理済み2248ユーザー」)。コードを見ると、メッセージは10000ユーザーごとにのみ出力される必要があることがわかります。
GenericUserBasedRecommenderとGenericDataModelを、NearestNUserNeighborhood、AveragingPreferenceInferrer、PearsonCorrelationSimilarityとともに使用しています。データベースからメンターをロードし、メンティーをPOJOのリストに追加し、それらをFastByIDMapに変換してDataModelに提供します。
これを行うためのより良い方法はありますか?プロダクトオーナーは、すべての検索でデータが最新である必要があります。