public async Task BufferedSender()
        {
            await using SearchResources resources = SearchResources.CreateWithNoIndexes(this);
            SearchClient searchClient = null;

            try
            {
                searchClient = await CreateIndexAsync(resources);

                // Simple
                {
                    #region Snippet:Azure_Search_Documents_Tests_Samples_Sample05_IndexingDocuments_BufferedSender1
                    await using SearchIndexingBufferedSender <Product> indexer =
                                    searchClient.CreateIndexingBufferedSender <Product>();
                    await indexer.UploadDocumentsAsync(GenerateCatalog(count : 100000));

                    #endregion
                }

                await WaitForDocumentCountAsync(searchClient, 100000);

                // Check
                #region Snippet:Azure_Search_Documents_Tests_Samples_Sample05_IndexingDocuments_BufferedSender2
                //@@ await indexer.FlushAsync();
                Assert.AreEqual(100000, (int)await searchClient.GetDocumentCountAsync());
                #endregion
            }
            finally
            {
                if (searchClient != null)
                {
                    await resources.GetIndexClient().DeleteIndexAsync(searchClient.IndexName);
                }
            }
        }
Пример #2
0
        public async Task CreateIndex()
        {
            await using SearchResources resources = SearchResources.CreateWithNoIndexes(this);
            Environment.SetEnvironmentVariable("SEARCH_ENDPOINT", resources.Endpoint.ToString());
            Environment.SetEnvironmentVariable("SEARCH_API_KEY", resources.PrimaryApiKey);

            #region Snippet:Azure_Search_Tests_Samples_Readme_CreateIndex
            Uri    endpoint = new Uri(Environment.GetEnvironmentVariable("SEARCH_ENDPOINT"));
            string key      = Environment.GetEnvironmentVariable("SEARCH_API_KEY");

            // Create a service client
            AzureKeyCredential credential = new AzureKeyCredential(key);
            SearchIndexClient  client     = new SearchIndexClient(endpoint, credential);
            /*@@*/ client = resources.GetIndexClient();

            // Create the index using FieldBuilder.
            #region Snippet:Azure_Search_Tests_Samples_Readme_CreateIndex_New_SearchIndex
            //@@SearchIndex index = new SearchIndex("hotels")
            /*@@*/ SearchIndex index = new SearchIndex(Recording.Random.GetName())
            {
                Fields     = new FieldBuilder().Build(typeof(Hotel)),
                Suggesters =
                {
                    // Suggest query terms from the hotelName field.
                    new SearchSuggester("sg", "hotelName")
                }
            };
            #endregion Snippet:Azure_Search_Tests_Samples_Readme_CreateIndex_New_SearchIndex

            client.CreateIndex(index);
            #endregion Snippet:Azure_Search_Tests_Samples_Readme_CreateIndex

            resources.IndexName = index.Name;
        }
        public async Task SimpleIndexing()
        {
            await using SearchResources resources = SearchResources.CreateWithNoIndexes(this);
            SearchClient searchClient = null;

            try
            {
                searchClient = await CreateIndexAsync(resources);

                // Simple
                #region Snippet:Azure_Search_Documents_Tests_Samples_Sample05_IndexingDocuments_SimpleIndexing1
                IEnumerable <Product> products = GenerateCatalog(count: 1000);
                await searchClient.UploadDocumentsAsync(products);

                #endregion

                await WaitForDocumentCountAsync(searchClient, 1000);

                // When using the free SKU, there may be enough load to prevent
                // immediately replication to all replicas and we get back the
                // wrong count. Wait another second before checking again. We
                // may also upgrade to a basic SKU, but that will take longer
                // to provision.
                await DelayAsync(TimeSpan.FromSeconds(1));

                // Check
                #region Snippet:Azure_Search_Documents_Tests_Samples_Sample05_IndexingDocuments_SimpleIndexing2
                Assert.AreEqual(1000, (int)await searchClient.GetDocumentCountAsync());
                #endregion

                // Too many
                try
                {
                    #region Snippet:Azure_Search_Documents_Tests_Samples_Sample05_IndexingDocuments_SimpleIndexing3
                    IEnumerable <Product> all = GenerateCatalog(count: 100000);
                    await searchClient.UploadDocumentsAsync(all);

                    #endregion

                    Assert.Fail("Expected too many documents failure.");
                }
                catch (RequestFailedException ex)
                {
                    Assert.AreEqual(400, ex.Status);
                }
            }
            finally
            {
                if (searchClient != null)
                {
                    await resources.GetIndexClient().DeleteIndexAsync(searchClient.IndexName);
                }
            }
        }
Пример #4
0
        public async Task SimpleIndexing()
        {
            await using SearchResources resources = SearchResources.CreateWithNoIndexes(this);
            SearchClient searchClient = null;

            try
            {
                searchClient = await CreateIndexAsync(resources);

                // Simple
                #region Snippet:Azure_Search_Documents_Tests_Samples_Sample05_IndexingDocuments_SimpleIndexing1
                IEnumerable <Product> products = GenerateCatalog(count: 1000);
                await searchClient.UploadDocumentsAsync(products);

                #endregion

                await WaitForDocumentCountAsync(searchClient, 1000);

                // Check
                #region Snippet:Azure_Search_Documents_Tests_Samples_Sample05_IndexingDocuments_SimpleIndexing2
                Assert.AreEqual(1000, (int)await searchClient.GetDocumentCountAsync());
                #endregion

                // Too many
                try
                {
                    #region Snippet:Azure_Search_Documents_Tests_Samples_Sample05_IndexingDocuments_SimpleIndexing3
                    IEnumerable <Product> all = GenerateCatalog(count: 100000);
                    await searchClient.UploadDocumentsAsync(all);

                    #endregion

                    Assert.Fail("Expected too many documents failure.");
                }
                catch (RequestFailedException ex)
                {
                    Assert.AreEqual(400, ex.Status);
                }
            }
            finally
            {
                if (searchClient != null)
                {
                    await resources.GetIndexClient().DeleteIndexAsync(searchClient.IndexName);
                }
            }
        }
Пример #5
0
        public async Task CreateIndex()
        {
            await using SearchResources resources = SearchResources.CreateWithNoIndexes(this);
            Environment.SetEnvironmentVariable("SEARCH_ENDPOINT", resources.Endpoint.ToString());
            Environment.SetEnvironmentVariable("SEARCH_API_KEY", resources.PrimaryApiKey);

            #region Snippet:Azure_Search_Tests_Samples_Readme_CreateIndex
            Uri    endpoint = new Uri(Environment.GetEnvironmentVariable("SEARCH_ENDPOINT"));
            string key      = Environment.GetEnvironmentVariable("SEARCH_API_KEY");

            // Create a service client
            AzureKeyCredential credential = new AzureKeyCredential(key);
            SearchIndexClient  client     = new SearchIndexClient(endpoint, credential);
            /*@@*/ client = resources.GetIndexClient();

            // Create the index
            //@@SearchIndex index = new SearchIndex("hotels")
            /*@@*/ SearchIndex index = new SearchIndex(Recording.Random.GetName())
            {
                Fields =
                {
                    new SimpleField("hotelId",                    SearchFieldDataType.String)
                    {
                        IsKey = true,                             IsFilterable= true, IsSortable  = true
                    },
                    new SearchableField("hotelName")
                    {
                        IsFilterable = true,                      IsSortable  = true
                    },
                    new SearchableField("description")
                    {
                        AnalyzerName = LexicalAnalyzerName.EnLucene
                    },
                    new SearchableField("tags",                   collection: true)
                    {
                        IsFilterable = true,                      IsFacetable = true
                    },
                    new ComplexField("address")
                    {
                        Fields =
                        {
                            new SearchableField("streetAddress"),
                            new SearchableField("city")
                            {
                                IsFilterable = true,             IsSortable                = true, IsFacetable = true
                            },
                            new SearchableField("stateProvince")
                            {
                                IsFilterable = true,             IsSortable                = true, IsFacetable = true
                            },
                            new SearchableField("country")
                            {
                                IsFilterable = true,             IsSortable                = true, IsFacetable = true
                            },
                            new SearchableField("postalCode")
                            {
                                IsFilterable = true,             IsSortable                = true, IsFacetable = true
                            }
                        }
                    }
                },
                Suggesters =
                {
                    // Suggest query terms from both the hotelName and description fields.
                    new SearchSuggester("sg", "hotelName", "description")
                }
            };

            client.CreateIndex(index);
            #endregion Snippet:Azure_Search_Tests_Samples_Readme_CreateIndex
        }
Пример #6
0
        public async Task CreateManualIndex()
        {
            await using SearchResources resources = SearchResources.CreateWithNoIndexes(this);
            SearchIndexClient client = resources.GetIndexClient();

            #region Snippet:Azure_Search_Tests_Samples_Readme_CreateManualIndex
            // Create the index using field definitions.
            #region Snippet:Azure_Search_Tests_Samples_Readme_CreateManualIndex_New_SearchIndex
            //@@SearchIndex index = new SearchIndex("hotels")
            /*@@*/ SearchIndex index = new SearchIndex(Recording.Random.GetName())
            {
                Fields =
                {
                    new SimpleField("hotelId",                    SearchFieldDataType.String)
                    {
                        IsKey = true,                             IsFilterable= true, IsSortable  = true
                    },
                    new SearchableField("hotelName")
                    {
                        IsFilterable = true,                      IsSortable  = true
                    },
                    new SearchableField("description")
                    {
                        AnalyzerName = LexicalAnalyzerName.EnLucene
                    },
                    new SearchableField("tags",                   collection: true)
                    {
                        IsFilterable = true,                      IsFacetable = true
                    },
                    new ComplexField("address")
                    {
                        Fields =
                        {
                            new SearchableField("streetAddress"),
                            new SearchableField("city")
                            {
                                IsFilterable = true,             IsSortable                = true, IsFacetable = true
                            },
                            new SearchableField("stateProvince")
                            {
                                IsFilterable = true,             IsSortable                = true, IsFacetable = true
                            },
                            new SearchableField("country")
                            {
                                IsFilterable = true,             IsSortable                = true, IsFacetable = true
                            },
                            new SearchableField("postalCode")
                            {
                                IsFilterable = true,             IsSortable                = true, IsFacetable = true
                            }
                        }
                    }
                },
                Suggesters =
                {
                    // Suggest query terms from the hotelName field.
                    new SearchSuggester("sg", "hotelName")
                }
            };
            #endregion Snippet:Azure_Search_Tests_Samples_Readme_CreateManualIndex_New_SearchIndex

            client.CreateIndex(index);
            #endregion Snippet:Azure_Search_Tests_Samples_Readme_CreateManualIndex

            resources.IndexName = index.Name;
        }
        public async Task CreateIndex()
        {
            await using SearchResources resources = SearchResources.CreateWithNoIndexes(this);
            Environment.SetEnvironmentVariable("SEARCH_ENDPOINT", resources.Endpoint.ToString());
            Environment.SetEnvironmentVariable("SEARCH_API_KEY", resources.PrimaryApiKey);

            #region Snippet:Azure_Search_Tests_Sample2_FieldBuilderIgnore_CreateIndex
            Uri    endpoint = new Uri(Environment.GetEnvironmentVariable("SEARCH_ENDPOINT"));
            string key      = Environment.GetEnvironmentVariable("SEARCH_API_KEY");

            // Define client options to use camelCase when serializing property names.
            SearchClientOptions options = new SearchClientOptions(ServiceVersion)
            {
                Serializer = new JsonObjectSerializer(
                    new JsonSerializerOptions
                {
                    PropertyNamingPolicy = JsonNamingPolicy.CamelCase
                })
            };

            // Create a service client.
            AzureKeyCredential credential  = new AzureKeyCredential(key);
            SearchIndexClient  indexClient = new SearchIndexClient(endpoint, credential, options);
#if !SNIPPET
            indexClient = resources.GetIndexClient(options);
#endif

            // Create the FieldBuilder using the same serializer.
            FieldBuilder fieldBuilder = new FieldBuilder
            {
                Serializer = options.Serializer
            };

            // Create the index using FieldBuilder.
#if SNIPPET
            SearchIndex index = new SearchIndex("movies")
#else
            SearchIndex index = new SearchIndex(Recording.Random.GetName())
#endif
            {
                Fields     = fieldBuilder.Build(typeof(Movie)),
                Suggesters =
                {
                    // Suggest query terms from the "name" field.
                    new SearchSuggester("n", "name")
                }
            };

            // Define the "genre" field as a string.
            SearchableField genreField = new SearchableField("genre")
            {
                AnalyzerName = LexicalAnalyzerName.Values.EnLucene,
                IsFacetable  = true,
                IsFilterable = true
            };
            index.Fields.Add(genreField);

            // Create the index.
            indexClient.CreateIndex(index);
            #endregion Snippet:Azure_Search_Tests_Sample2_FieldBuilderIgnore_CreateIndex

            // Make sure the index is removed.
            resources.IndexName = index.Name;

            #region Snippet:Azure_Search_Tests_Sample2_FieldBuilderIgnore_UploadDocument
            Movie movie = new Movie
            {
                Id     = Guid.NewGuid().ToString("n"),
                Name   = "The Lord of the Rings: The Return of the King",
                Genre  = MovieGenre.Fantasy,
                Year   = 2003,
                Rating = 9.1
            };

            // Add a movie to the index.
            SearchClient searchClient = indexClient.GetSearchClient(index.Name);
            searchClient.UploadDocuments(new[] { movie });
            #endregion Snippet:Azure_Search_Tests_Sample2_FieldBuilderIgnore_UploadDocument
        }