Refactor SearchService

Fixes issue with reference search results containing invalid results
Extract functionality to smaller, focused classes