To better understand your problem - are you using EPiServer.Find.Personalization package or regular Episerver.Find?
How is content itself personalized? Blocks or some other way?
We are not using EPiServer.Find.Personalization, most of our visitor groups rely solely on simple classes inhertiing from CriterionBase and overriding IsMatch.
We use them primarily to show/hide blocks in content areas on pages. We are not using commerce.
As far as I am aware, default indexing logic will index content based on access for anonymous user.
To achive this out of the box, your visitior groups can be made into security roles (se image below). This will hide content for visitors not part of the group, so it all depends on your setup.
Another option could be to add more data upon indexing, so that you can use that information for sorting relevance upon search.
I have been trawling the docs but cant see how to integrate find results with any visitor group personalisation. is this even possible?
we have a number of visitor groups which are determined by the url. I assume when find indexes, it does not take any of this into consideration in the data it holds for a page or block.
is there a way to ensure that when a user is searching the correctly personalised/visitor group content is all that is returned in a search hit?
obviously when a user clicks through to the page in the result, it will show the correct content, but if they searched for something that was 'personalised' when they went to the page, they might not actually see it.