The claim of improved efficiency and reliability of networking technology provides for a framework of service discovery, where clients connect to services over the network based on a comparison of the client’s requirements with the advertised capabilities of those services. Many service directory technologies exist to provide this middleware functionality; each with their own default set of service attributes that may be used for comparison and each with their own default search algorithms. Because the most expressive search ability might not be as important as robustness for directory services, the search algorithms provided are usually limited when compared to a service devoted entirely to intelligent service discovery. This paper proposes a framework of intelligent service discovery running alongside a service directory that allows the search service to have available a range of search algorithms. The most appropriate algorithm may be chosen for a search according to the data types found in the search criteria. A specific implementation of this framework will be presented as a Jini service, using a constraint satisfaction problem-solving architecture that allows different algorithms to be used as library components.