public MatchingResponse MatchWithSearchVector(SearchVector Search)
        {
            MatchingResponse Output = new MatchingResponse();

            Output.Service   = this;
            Output.ServiceId = Id;
            if (Search.models != null && Search.models.Value != null && Search.models.Value.Count > 0 && Search.models.Priority > 0)
            {
                if (CloudServiceModelId.HasValue && Search.models.Value.Contains(CloudServiceModelId.Value))
                {
                    Output.pointsmodels = Search.models.Priority;
                }
            }
            if (Search.providers != null && Search.providers.Value != null && Search.providers.Value.Count > 0 && Search.providers.Priority > 0)
            {
                if (ProviderId.HasValue && Search.providers.Value.Contains(ProviderId.Value))
                {
                    Output.pointsproviders = Search.providers.Priority;
                }
            }
            if (Search.deploymentinfos != null && Search.deploymentinfos.Value != null && Search.deploymentinfos.Value.Count > 0 && Search.deploymentinfos.Priority > 0)
            {
                if (DeploymentInfoId.HasValue && Search.deploymentinfos.Value.Contains(DeploymentInfoId.Value))
                {
                    Output.pointsdeploymentinfos = Search.deploymentinfos.Priority;
                }
            }
            if (Search.datalocations != null && Search.datalocations.Value != null && Search.datalocations.Value.Count > 0 && Search.datalocations.Priority > 0)
            {
                if (DataLocations.Select(x => x.Id).Intersect(Search.datalocations.Value).Any())
                {
                    Output.pointsdatalocations = Search.datalocations.Priority;
                }
            }
            if (Search.certificates != null && Search.certificates.Value != null && Search.certificates.Value.Count > 0 && Search.certificates.Priority > 0)
            {
                if (Certificates.Select(x => x.Id).Intersect(Search.certificates.Value).Any())
                {
                    Output.pointscertificates = Search.certificates.Priority;
                }
            }
            if (Search.features != null && Search.features.Value != null && Search.features.Value.Count > 0 && Search.features.Priority > 0)
            {
                if (Features.Select(x => x.Id).Intersect(Search.features.Value).Any())
                {
                    Output.pointsfeatures = Search.features.Priority;
                }
            }
            return(Output);
        }