This interface defines the contract that any database-specific search implementations should follow.
This is configured via the searchStrategy property of
the DefaultSearchPluginInitOptions.
InjectableStrategy(ctx: RequestContext, input: SearchInput, enabledOnly: boolean) => Promise<SearchResult[]>(ctx: RequestContext, input: SearchInput, enabledOnly: boolean) => Promise<number>(ctx: RequestContext, input: SearchInput, enabledOnly: boolean) => Promise<Map<ID, number>>(ctx: RequestContext, input: SearchInput, enabledOnly: boolean) => Promise<Map<ID, number>>