A search engine factory with different data sources.
func makeOnlineManager() throws -> ISearchManager?
Create a search engine working online.
ISearchManager?
func makeOfflineManager() throws -> ISearchManager?
Create a search engine working with preloaded data.
func makeSmartManager() throws -> ISearchManager?
Create a search engine working online or with preloaded data depending on the availability of internet connection.