I think it would be good to reuse SearchOracle here, since it provides normalized search (case-insensitive, ignoring dashes and underscores) and it encapsulates a general searching algorithm in one place.