private static void CreateIndex() { // Create the Azure Search index based on the included schema try { // Create the suggester for suggestions Suggester sg = new Suggester(); sg.Name = "sg"; sg.SearchMode = SuggesterSearchMode.AnalyzingInfixMatching; sg.SourceFields = new List<string>() { "FEATURE_NAME", "COUNTY_NAME" }; var definition = new Index() { Name = "geonames", Fields = new[] { new Field("FEATURE_ID", DataType.String) { IsKey = true, IsSearchable = false, IsFilterable = false, IsSortable = false, IsFacetable = false, IsRetrievable = true}, new Field("FEATURE_NAME", DataType.String) { IsKey = false, IsSearchable = true, IsFilterable = true, IsSortable = true, IsFacetable = false, IsRetrievable = true}, new Field("FEATURE_CLASS", DataType.String) { IsKey = false, IsSearchable = true, IsFilterable = true, IsSortable = true, IsFacetable = false, IsRetrievable = true}, new Field("STATE_ALPHA", DataType.String) { IsKey = false, IsSearchable = true, IsFilterable = true, IsSortable = true, IsFacetable = true, IsRetrievable = true}, new Field("STATE_NUMERIC", DataType.Int32) { IsKey = false, IsSearchable = false, IsFilterable = true, IsSortable = true, IsFacetable = false, IsRetrievable = true}, new Field("COUNTY_NAME", DataType.String) { IsKey = false, IsSearchable = true, IsFilterable = true, IsSortable = true, IsFacetable = true, IsRetrievable = true}, new Field("COUNTY_NUMERIC", DataType.Int32) { IsKey = false, IsSearchable = false, IsFilterable = true, IsSortable = true, IsFacetable = false, IsRetrievable = true}, new Field("ELEV_IN_M", DataType.Int32) { IsKey = false, IsSearchable = false, IsFilterable = true, IsSortable = true, IsFacetable = true, IsRetrievable = true}, new Field("ELEV_IN_FT", DataType.Int32) { IsKey = false, IsSearchable = false, IsFilterable = true, IsSortable = true, IsFacetable = true, IsRetrievable = true}, new Field("MAP_NAME", DataType.String) { IsKey = false, IsSearchable = true, IsFilterable = true, IsSortable = true, IsFacetable = false, IsRetrievable = true}, new Field("DESCRIPTION", DataType.String) { IsKey = false, IsSearchable = true, IsFilterable = false, IsSortable = false, IsFacetable = false, IsRetrievable = true}, new Field("HISTORY", DataType.String) { IsKey = false, IsSearchable = true, IsFilterable = false, IsSortable = false, IsFacetable = false, IsRetrievable = true}, new Field("LOCATION", DataType.GeographyPoint) { IsKey = false, IsSearchable = false, IsFilterable = true, IsSortable = false, IsFacetable = false, IsRetrievable = true}, new Field("DATE_CREATED", DataType.DateTimeOffset) { IsKey = false, IsSearchable = false, IsFilterable = true, IsSortable = true, IsFacetable = true, IsRetrievable = true}, new Field("DATE_EDITED", DataType.DateTimeOffset) { IsKey = false, IsSearchable = false, IsFilterable = true, IsSortable = true, IsFacetable = true, IsRetrievable = true} }, Suggesters = new List<Suggester> { sg } }; _searchClient.Indexes.Create(definition); } catch (Exception ex) { Console.WriteLine("Error creating index: {0}\r\n", ex.Message.ToString()); } }
private static void CreateIndex() { try { Suggester sg = new Suggester(); sg.Name = "sg"; sg.SearchMode = SuggesterSearchMode.AnalyzingInfixMatching; sg.SourceFields = new string[] { "brand_name", "product_name", "sku", "product_subcategory", "product_category", "product_department", "product_family" }; var definition = new Index() { Name = IndexName, Fields = new[] { new Field("product_id", DataType.String) { IsKey = true, IsSearchable = false, IsFilterable = true, IsSortable = false, IsFacetable = false, IsRetrievable = true }, new Field("product_class_id", DataType.Int32) { IsKey = false, IsSearchable = false, IsFilterable = false, IsSortable = true, IsFacetable = false, IsRetrievable = true }, new Field("brand_name", DataType.String) { IsKey = false, IsSearchable = true, IsFilterable = false, IsSortable = false, IsFacetable = false, IsRetrievable = true }, new Field("product_name", DataType.String) { IsKey = false, IsSearchable = true, IsFilterable = false, IsSortable = false, IsFacetable = false, IsRetrievable = true }, new Field("sku", DataType.String) { IsKey = false, IsSearchable = true, IsFilterable = false, IsSortable = false, IsFacetable = false, IsRetrievable = true }, new Field("srp", DataType.Int32) { IsKey = false, IsSearchable = false, IsFilterable = true, IsSortable = true, IsFacetable = true, IsRetrievable = true }, new Field("gross_weight", DataType.Double) { IsKey = false, IsSearchable = false, IsFilterable = true, IsSortable = true, IsFacetable = true, IsRetrievable = true }, new Field("net_weight", DataType.Double) { IsKey = false, IsSearchable = false, IsFilterable = true, IsSortable = true, IsFacetable = true, IsRetrievable = true }, new Field("recyclable_package", DataType.String) { IsKey = false, IsSearchable = false, IsFilterable = true, IsSortable = false, IsFacetable = true, IsRetrievable = true }, new Field("low_fat", DataType.String) { IsKey = false, IsSearchable = false, IsFilterable = true, IsSortable = false, IsFacetable = true, IsRetrievable = true }, new Field("units_per_case", DataType.Int32) { IsKey = false, IsSearchable = false, IsFilterable = true, IsSortable = true, IsFacetable = true, IsRetrievable = true }, new Field("cases_per_pallet", DataType.Int32) { IsKey = false, IsSearchable = false, IsFilterable = true, IsSortable = true, IsFacetable = true, IsRetrievable = true }, new Field("shelf_width", DataType.Double) { IsKey = false, IsSearchable = false, IsFilterable = true, IsSortable = true, IsFacetable = true, IsRetrievable = true }, new Field("shelf_height", DataType.Double) { IsKey = false, IsSearchable = false, IsFilterable = true, IsSortable = true, IsFacetable = true, IsRetrievable = true }, new Field("shelf_depth", DataType.Double) { IsKey = false, IsSearchable = false, IsFilterable = true, IsSortable = true, IsFacetable = true, IsRetrievable = true }, new Field("product_subcategory",DataType.String) { IsKey = false, IsSearchable = true, IsFilterable = false, IsSortable = false, IsFacetable = true, IsRetrievable = true }, new Field("product_category", DataType.String) { IsKey = false, IsSearchable = true, IsFilterable = false, IsSortable = false, IsFacetable = true, IsRetrievable = true }, new Field("product_department", DataType.String) { IsKey = false, IsSearchable = true, IsFilterable = false, IsSortable = false, IsFacetable = true, IsRetrievable = true }, new Field("product_family", DataType.String) { IsKey = false, IsSearchable = true, IsFilterable = false, IsSortable = false, IsFacetable = true, IsRetrievable = true }, new Field("url", DataType.String) { IsKey = false, IsSearchable = false, IsFilterable = false, IsSortable = false, IsFacetable = false, IsRetrievable = true }, new Field("recommendations", DataType.Collection(DataType.String)) { IsSearchable = true, IsFilterable = true, IsFacetable = true } } }; definition.Suggesters.Add(sg); _searchClient.Indexes.Create(definition); } catch (Exception ex) { Console.WriteLine("Error creating index: {0}:\r\n", ex.Message.ToString()); } }
private static void LoadPackagesIntoAzureSearch(IEnumerable<Package> packagesToLoad) { _searchServiceName = ConfigurationManager.AppSettings["SearchServiceName"]; _apiKey = ConfigurationManager.AppSettings["SearchServiceApiKey"]; _SearchClient = new SearchServiceClient(_searchServiceName, new SearchCredentials(_apiKey)); _IndexClient = new SearchIndexClient(_searchServiceName, "packages", new SearchCredentials(_apiKey)); Suggester sg = new Suggester(); sg.Name = "sg"; sg.SearchMode = SuggesterSearchMode.AnalyzingInfixMatching; sg.SourceFields = new List<string> { "NuGetIdRaw", "NuGetIdCollection" }; var indexDefinition = new Index() { Name = "packages", Suggesters = new List<Suggester> { sg }, Fields = new[] { new Field("NuGetIdRaw", DataType.String) { IsKey=false, IsSearchable=true, IsSortable=true, IsRetrievable=true }, new Field("NuGetIdCollection", DataType.Collection(DataType.String)) { IsKey=false, IsSearchable=true, IsSortable=false, IsRetrievable=true, IsFacetable=true, IsFilterable=true }, new Field("NuGetId", DataType.String) { IsKey=true, IsSearchable=false, IsSortable=false, IsRetrievable=true } } }; // NOTE: ALready exists _SearchClient.Indexes.Delete("packages"); _SearchClient.Indexes.Create(indexDefinition); // Populate try { for (var i = 0; i < packagesToLoad.Count(); i += 1000) { _IndexClient.Documents.Index( IndexBatch.Create( packagesToLoad.Skip(i).Take(1000).Select( doc => IndexAction.Create(new { NuGetId = Guid.NewGuid(), NuGetIdRaw = doc.NuGetId, NuGetIdCollection = doc.NuGetId.Split('.') }) ) ) ); } } catch (IndexBatchException e) { // Sometimes when your Search service is under load, indexing will fail for some of the documents in // the batch. Depending on your application, you can take compensating actions like delaying and // retrying. For this simple demo, we just log the failed document keys and continue. Console.WriteLine( "Failed to index some of the documents: {0}", String.Join(", ", e.IndexResponse.Results.Where(r => !r.Succeeded).Select(r => r.Key))); } Console.Out.WriteLine("Completed"); }
private static void CreateIndex(string indexName, string suggesterName) { // Create the Azure Search index based on the included schema try { // Create the suggester for suggestions Suggester sg = new Suggester(); sg.Name = suggesterName; sg.SearchMode = SuggesterSearchMode.AnalyzingInfixMatching; sg.SourceFields = new List<string>() { "name", "county" }; var definition = new Index() { Name = indexName, Fields = new[] { new Field("id", DataType.String) { IsKey = true, IsSearchable = false, IsFilterable = false, IsSortable = false, IsFacetable = false, IsRetrievable = true}, new Field("name", DataType.String) { IsKey = false, IsSearchable = true, IsFilterable = true, IsSortable = true, IsFacetable = false, IsRetrievable = true}, new Field("county", DataType.String) { IsKey = false, IsSearchable = true, IsFilterable = true, IsSortable = true, IsFacetable = true, IsRetrievable = true}, new Field("elevation", DataType.Int64) { IsKey = false, IsSearchable = false, IsFilterable = true, IsSortable = true, IsFacetable = true, IsRetrievable = true}, new Field("location", DataType.GeographyPoint) { IsKey = false, IsSearchable = false, IsFilterable = false, IsSortable = false, IsFacetable = false, IsRetrievable = true}, }, Suggesters = new List<Suggester> { sg } }; _searchClient.Indexes.Create(definition); } catch (Exception ex) { Console.WriteLine("Error creating index: {0}\r\n", ex.Message.ToString()); } }