There are two places in the code that make implementing content-based
recommendation with a custom ItemSimilarity very difficult. I ran into
these unknowingly some time ago.
AFAIK, the main purpose of using a content-based strategy would be to
handle the "cold-start" problem where no ratings exist for a new item
and a CF based approach cannot make any predictions.
This will unfortunately not work by only implementing a custom
ItemSimilarity, because before the ItemSimilarity implementation is
used, a set of candidate items has to be found in the DataModel. In our
default implementation all items that co-occurr with one of the users
preferred items are selected. If we have an item that has not been rated
yet, we will run into a NoSuchItemException here.
So a custom CandidateItemsStrategy will be necessary to make this work.
The situation is even worse when the most-similar-items need to be
computed, in GenericItemBasedRecommender.doMostSimilarItems(...) only
co-occurring items are selected too, but we did not implement an
exchangable strategy so this behavior cannot be customized currently.
I would suggest to create a similar construct like
CandidateItemsStrategy for most-similar-items too, any objections to that?
Am 30.12.2010 21:54, schrieb Sean Owen: