Hi all,

I have a use case for Taste where we should use all available items for computation of user similarity, but only some items are eligible to be recommended. The reason is that items expire: goods get discontinued, for example. The fact that a user bought something now discontinued is important for finding similar users, but we cannot recommend it. One way of solving this is using mahout to generate recommendations, and then post-process it to remove ineligible items. But this can run into performance issues if the set of ineligible items is large. Also, the evaluation framework is not designed to handle this kind of a restriction.

I can contribute a patch, but since I am new to the project, I need some help with the software engineering from the regular contributors. How would I design the necessary classes? One idea I considered was using the existing tools for candidate item strategy. This has two downsides: you can only use one candidate item strategy at a time, so having an eligible set would make it impossible to have a candidate item strategy. Also, the evaluator doesn't take the candidate item strategy into account. So, I suppose I could try writing an EligibleSetCandidateItemStrategy that takes another CandidateItemStrategy and applies it as well, and I can add a new evaluator that takes eligible sets into account. I don't know the thinking behind the design, so I don't know if this is a good idea or not. Can we agree on a design before I get started?

Cheers,

Anatoliy

Reply via email to