public IRequest Marshall(DefineSuggesterRequest defineSuggesterRequest) { IRequest request = new DefaultRequest(defineSuggesterRequest, "AmazonCloudSearch"); request.Parameters.Add("Action", "DefineSuggester"); request.Parameters.Add("Version", "2013-01-01"); if (defineSuggesterRequest != null && defineSuggesterRequest.IsSetDomainName()) { request.Parameters.Add("DomainName", StringUtils.FromString(defineSuggesterRequest.DomainName)); } if (defineSuggesterRequest != null) { Suggester suggester = defineSuggesterRequest.Suggester; if (suggester != null && suggester.IsSetSuggesterName()) { request.Parameters.Add("Suggester.SuggesterName", StringUtils.FromString(suggester.SuggesterName)); } if (suggester != null) { DocumentSuggesterOptions documentSuggesterOptions = suggester.DocumentSuggesterOptions; if (documentSuggesterOptions != null && documentSuggesterOptions.IsSetSourceField()) { request.Parameters.Add("Suggester.DocumentSuggesterOptions.SourceField", StringUtils.FromString(documentSuggesterOptions.SourceField)); } if (documentSuggesterOptions != null && documentSuggesterOptions.IsSetFuzzyMatching()) { request.Parameters.Add("Suggester.DocumentSuggesterOptions.FuzzyMatching", StringUtils.FromString(documentSuggesterOptions.FuzzyMatching)); } if (documentSuggesterOptions != null && documentSuggesterOptions.IsSetSortExpression()) { request.Parameters.Add("Suggester.DocumentSuggesterOptions.SortExpression", StringUtils.FromString(documentSuggesterOptions.SortExpression)); } } } return(request); }
public void CreateIndex(string name, IEnumerable <IFieldDefinition> fieldDefinitions) { var amazonSearchParameters = this.GetAmazonParams(); var region = RegionEndpoint.GetBySystemName(amazonSearchParameters[Region]); //You must add here your accessKey and SecretAccessKey. See here how to get them: http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSGettingStartedGuide/AWSCredentials.html using (IAmazonCloudSearch cloudSearchClient = AWSClientFactory.CreateAmazonCloudSearchClient(amazonSearchParameters[AccessKey], amazonSearchParameters[SecretAccessKey], region)) { try { var domainNames = cloudSearchClient.ListDomainNames(); if (!domainNames.DomainNames.ContainsKey(name)) { CreateDomainRequest domainRequest = new CreateDomainRequest(); domainRequest.DomainName = name; cloudSearchClient.CreateDomain(domainRequest); } if (fieldDefinitions == null) { throw new ArgumentNullException("fieldDefinitions"); } foreach (var fieldDefinition in fieldDefinitions) { DefineIndexFieldRequest request = new DefineIndexFieldRequest(); request.DomainName = name; request.IndexField = new IndexField(); request.IndexField.IndexFieldName = fieldDefinition.Name.ToLowerInvariant(); if (fieldDefinition.Type == null || fieldDefinition.Type == typeof(string)) { request.IndexField.IndexFieldType = IndexFieldType.Text; } if (fieldDefinition.Type == typeof(string[])) { request.IndexField.IndexFieldType = IndexFieldType.TextArray; } if (fieldDefinition.Type == typeof(int)) { request.IndexField.IndexFieldType = IndexFieldType.Int; } if (fieldDefinition.Type == typeof(DateTime)) { request.IndexField.IndexFieldType = IndexFieldType.Date; } cloudSearchClient.DefineIndexField(request); } SearchResults searchResults = new SearchResults(); foreach (var field in searchResults.HighlightedFields) { Suggester suggester = new Suggester(); DocumentSuggesterOptions suggesterOptions = new DocumentSuggesterOptions(); suggesterOptions.FuzzyMatching = SuggesterFuzzyMatching.None; suggesterOptions.SourceField = field.ToLowerInvariant(); suggester.DocumentSuggesterOptions = suggesterOptions; suggester.SuggesterName = this.GetSuggesterName(field); DefineSuggesterRequest defineRequest = new DefineSuggesterRequest(); defineRequest.DomainName = name; defineRequest.Suggester = suggester; cloudSearchClient.DefineSuggester(defineRequest); } searchResults.Dispose(); IndexDocumentsRequest documentRequest = new IndexDocumentsRequest(); documentRequest.DomainName = name; cloudSearchClient.IndexDocuments(documentRequest); } catch (BaseException ex) { Log.Write(ex.InnerException.Message); } catch (LimitExceededException ex) { Log.Write(ex.InnerException.Message); } catch (InternalException ex) { Log.Write(ex.InnerException.Message); } } }