public async Task <List <DocumentModel> > MultiSearch(IndexModel indexModel, MultiSearchModel searchModel)
        {
            var results = new List <List <DocumentModel> >();

            foreach (var search in searchModel.Searches)
            {
                SetSearcher(search.Type);
                results.Add(await _searcher.ExecuteSearch(indexModel, search));
            }

            List <DocumentModel> searchResult;

            switch (searchModel.QueryType)
            {
            case QueryType.Or:
                searchResult = CollectionsHelper.Union(new DocumentComparer(), results.ToArray()).ToList();
                break;

            case QueryType.And:
                searchResult = CollectionsHelper.Intersect(new DocumentComparer(), results.ToArray()).ToList();
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(GetSorted(searchModel, searchResult));
        }