/// <summary> /// <para>Tells the search domain to start indexing its documents using the latest text processing options and <c>IndexFields</c> . This /// operation must be invoked to make options whose OptionStatus has <c>OptionState</c> of <c>RequiresIndexDocuments</c> visible in search /// results.</para> /// </summary> /// /// <param name="indexDocumentsRequest">Container for the necessary parameters to execute the IndexDocuments service method on /// AmazonCloudSearch.</param> /// /// <returns>The response from the IndexDocuments service method, as returned by AmazonCloudSearch.</returns> /// /// <exception cref="T:Amazon.CloudSearch.Model.BaseException" /> /// <exception cref="T:Amazon.CloudSearch.Model.ResourceNotFoundException" /> /// <exception cref="T:Amazon.CloudSearch.Model.InternalException" /> /// <param name="cancellationToken"> /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// </param> public Task <IndexDocumentsResponse> IndexDocumentsAsync(IndexDocumentsRequest indexDocumentsRequest, CancellationToken cancellationToken = default(CancellationToken)) { var marshaller = new IndexDocumentsRequestMarshaller(); var unmarshaller = IndexDocumentsResponseUnmarshaller.GetInstance(); return(Invoke <IRequest, IndexDocumentsRequest, IndexDocumentsResponse>(indexDocumentsRequest, marshaller, unmarshaller, signer, cancellationToken)); }
internal IndexDocumentsResponse IndexDocuments(IndexDocumentsRequest request) { var marshaller = new IndexDocumentsRequestMarshaller(); var unmarshaller = IndexDocumentsResponseUnmarshaller.Instance; return(Invoke <IndexDocumentsRequest, IndexDocumentsResponse>(request, marshaller, unmarshaller)); }
/// <summary> /// Initiates the asynchronous execution of the IndexDocuments operation. /// <seealso cref="Amazon.CloudSearch_2011_02_01.IAmazonCloudSearch"/> /// </summary> /// /// <param name="request">Container for the necessary parameters to execute the IndexDocuments operation.</param> /// <param name="cancellationToken"> /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// </param> /// <returns>The task object representing the asynchronous operation.</returns> public Task <IndexDocumentsResponse> IndexDocumentsAsync(IndexDocumentsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken)) { var marshaller = new IndexDocumentsRequestMarshaller(); var unmarshaller = IndexDocumentsResponseUnmarshaller.Instance; return(InvokeAsync <IndexDocumentsRequest, IndexDocumentsResponse>(request, marshaller, unmarshaller, cancellationToken)); }
internal IndexDocumentsResponse IndexDocuments(IndexDocumentsRequest request) { var task = IndexDocumentsAsync(request); try { return(task.Result); } catch (AggregateException e) { ExceptionDispatchInfo.Capture(e.InnerException).Throw(); return(null); } }
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); } } }