I think it does work, but this code is definitely hard to grok. In my
defense it is complex for a reason at least -- performance.

When the end of one list of prefs is reached (the line "if (++xPrefIndex >=
xLength)") it does check for an inferrer in the next line. If there is one,
it sets "xIndex = Long.MAX_VALUE", and continues. This ensures the rest of
the y values are compared against an inferred x value.

Step through to convince yourself. Or, if you find I am actually completely
wrong do let me know.

On Thu, Sep 30, 2010 at 10:20 PM, Abigail Gertner <[email protected]> wrote:

> Hello - I noticed something that I think might be a problem with the
> userSimilarity computation in the AbstractSimilarity class. After
> updating the running sums, the method checks the value of compare and
> moves to the next preference value in the list that has the smaller item
> index, or both if they are both on the same item. It breaks out of the
> loop if it is at the end of the preference list(s) that it needs to get
> the next value of. The problem is that it doesn't take into account if
> there is a preference inferrer -- if it is at the end of one of the
> lists, it will break out of the loop even if there is a preference
> inferrer. This results in ignoring the rest of the items in the other
> users preferences.
>
> Am I missing something or does this need to be corrected?
>
> Thanks for your help,
> -Abigail
>
>

Reply via email to