예제 #1
0
        protected IAmazonCloudSearchDomain CreateClient(string serviceUrl)
        {
            var config = new AmazonCloudSearchDomainConfig
            {
                ServiceURL = serviceUrl
            };

            Amazon.PowerShell.Utils.Common.PopulateConfig(this, config);

            var client = new AmazonCloudSearchDomainClient(this._CurrentCredentials, config);

            client.BeforeRequestEvent += RequestEventHandler;
            client.AfterResponseEvent += ResponseEventHandler;
            return(client);
        }
        public AWSCloudSearchHelper(RegionEndpoint regionEndpoint, string AWSAcessKey, string AWSSecretKey, string AWSCloudSearchDomainEndpoint)
        {
            // Set configuration info
            AmazonCloudSearchDomainConfig config = new AmazonCloudSearchDomainConfig();

            config.Timeout          = new TimeSpan(1, 0, 0);
            config.ReadWriteTimeout = new TimeSpan(1, 0, 0);
            config.RegionEndpoint   = regionEndpoint;
            config.ServiceURL       = AWSCloudSearchDomainEndpoint;

            // Create CloudSearch client
            CloudSearchClient = new AmazonCloudSearchDomainClient(
                AWSAcessKey,
                AWSSecretKey,
                config);
        }
        public AWSCloudSearchHelper(RegionEndpoint regionEndpoint)
        {
            // Set configuration info
            AmazonCloudSearchDomainConfig config = new AmazonCloudSearchDomainConfig();

            config.Timeout          = new TimeSpan(1, 0, 0);
            config.ReadWriteTimeout = new TimeSpan(1, 0, 0);
            config.RegionEndpoint   = regionEndpoint;
            config.ServiceURL       = Gadgets.LoadConfigurationSetting("AWS_CloudSearch_DomainEndpoint", "");

            // Create CloudSearch client
            CloudSearchClient = new AmazonCloudSearchDomainClient(
                Gadgets.LoadConfigurationSetting("AWSAccessKey", ""),
                Gadgets.LoadConfigurationSetting("AWSSecretKey", ""),
                config);
        }
예제 #4
0
        public IResultSet Search(ISearchQuery query)
        {
            var amazonSearchParameters           = this.GetAmazonParams();
            AmazonCloudSearchDomainConfig config = new AmazonCloudSearchDomainConfig();

            config.ServiceURL = amazonSearchParameters[SearchEndPoint];

            AmazonCloudSearchDomainClient domainClient = new AmazonCloudSearchDomainClient(amazonSearchParameters[AccessKey], amazonSearchParameters[SecretAccessKey], config);
            List <string> suggestions = new List <string>();
            StringBuilder highlights  = new StringBuilder();

            highlights.Append("{\'");

            if (query == null)
            {
                throw new ArgumentNullException("query");
            }

            foreach (var field in query.HighlightedFields)
            {
                if (highlights.Length > 2)
                {
                    highlights.Append(", \'");
                }

                highlights.Append(field.ToLowerInvariant());
                highlights.Append("\':{} ");

                SuggestRequest suggestRequest = new SuggestRequest();
                suggestRequest.Suggester = this.GetSuggesterName(field);
                suggestRequest.Size      = query.Take;
                suggestRequest.Query     = query.Text;
                SuggestResponse suggestion = domainClient.Suggest(suggestRequest);
                foreach (var suggest in suggestion.Suggest.Suggestions)
                {
                    suggestions.Add(suggest.Suggestion);
                }
            }

            highlights.Append("}");

            SearchRequest searchRequest = new SearchRequest();

            if (query.Filter != null)
            {
                searchRequest.FilterQuery = this.BuildQueryFilter(query.Filter);
            }

            if (query.OrderBy != null)
            {
                searchRequest.Sort = string.Join(",", query.OrderBy);
            }

            if (query.Take > 0)
            {
                searchRequest.Size = query.Take;
            }

            if (query.Skip > 0)
            {
                searchRequest.Start = query.Skip;
            }

            searchRequest.Highlight   = highlights.ToString();
            searchRequest.Query       = query.Text;
            searchRequest.QueryParser = QueryParser.Simple;
            var result = domainClient.Search(searchRequest).SearchResult;

            return(new AmazonResultSet(result, suggestions));
        }