So, we have a solution with 3 sites specified, each of them having their own Best Bets. The question I have is if one can specify from which site you should get the Best Bets? The solution is today having a search solution, in which you can select from which site you should get the search result, regardless of which site you have landed on.
For example, lets say the sites are called "siteone", "sitetwo" and "sitethree". "Banana" is added as a Best Bet for "sitetwo". When you are on www.siteone.se, and you search for "Banana" but select to search in "sitetwo", you don't get the Best Bet "Banana" (even though we provide the siteid as a filter).
However, if you go to www.sitetwo.se, and ask to get search result for "sitetwo" you get "Banana" as Best Bet result.
I guess the reason to this is that ApplyBestBets() is context aware, taking the current site request into consideration and ignoring that we have provided the siteid as a filter when getting the best bets? And the question is, can you specifically ask for Best Bets for a given siteid?
Did you find (hehe...) this thread? http://world.episerver.com/forum/developer-forum/EPiServer-Search/Thread-Container/2012/11/Get-best-bet-hits-only/
It has some info on how you can fetch best bets separately and maybe work from there.
Also check with Fiddler if you can see anything in the query or response that explains the behaviour you're seeing and maybe find a way around it.