[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-microsoft-azure-search-documents-dotnet":3,"mdc--uqj9qy-key":42,"related-repo-microsoft-azure-search-documents-dotnet":2547,"related-org-microsoft-azure-search-documents-dotnet":2655},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":37,"sourceUrl":40,"mdContent":41},"azure-search-documents-dotnet","build search applications with Azure AI Search","Azure AI Search SDK for .NET (Azure.Search.Documents). Use for building search applications with full-text, vector, semantic, and hybrid search. Covers SearchClient (queries, document CRUD), SearchIndexClient (index management), and SearchIndexerClient (indexers, skillsets). Triggers: \"Azure Search .NET\", \"SearchClient\", \"SearchIndexClient\", \"vector search C#\", \"semantic search .NET\", \"hybrid search\", \"Azure.Search.Documents\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"microsoft","Microsoft","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fmicrosoft.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Azure","azure","tag",{"name":17,"slug":18,"type":15},".NET","net",{"name":20,"slug":21,"type":15},"Search","search",{"name":23,"slug":24,"type":15},"OpenAI","openai",2804,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills","2026-05-13T06:14:21.508703","MIT",315,[31,32,14,33,34,35,36],"agent-skills","agents","foundry","mcp","sdk","skills",{"repoUrl":26,"stars":25,"forks":29,"topics":38,"description":39},[31,32,14,33,34,35,36],"Skills, MCP servers, Custom Agents, Agents.md for SDKs to ground Coding Agents","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Ftree\u002FHEAD\u002F.github\u002Fplugins\u002Fazure-sdk-dotnet\u002Fskills\u002Fazure-search-documents-dotnet","---\nname: azure-search-documents-dotnet\ndescription: |\n  Azure AI Search SDK for .NET (Azure.Search.Documents). Use for building search applications with full-text, vector, semantic, and hybrid search. Covers SearchClient (queries, document CRUD), SearchIndexClient (index management), and SearchIndexerClient (indexers, skillsets). Triggers: \"Azure Search .NET\", \"SearchClient\", \"SearchIndexClient\", \"vector search C#\", \"semantic search .NET\", \"hybrid search\", \"Azure.Search.Documents\".\nlicense: MIT\nmetadata:\n  author: Microsoft\n  version: \"1.0.0\"\n  package: Azure.Search.Documents\n---\n\n# Azure.Search.Documents (.NET)\n\nBuild search applications with full-text, vector, semantic, and hybrid search capabilities.\n\n## Installation\n\n```bash\ndotnet add package Azure.Search.Documents\ndotnet add package Azure.Identity\n```\n\n**Current Versions**: Stable v11.7.0, Preview v11.8.0-beta.1\n\n## Environment Variables\n\n```bash\nSEARCH_ENDPOINT=https:\u002F\u002F\u003Csearch-service>.search.windows.net  # Required: search service endpoint\nSEARCH_INDEX_NAME=\u003Cindex-name>  # Required: search index name\nAZURE_TOKEN_CREDENTIALS=prod  # Required only if DefaultAzureCredential is used in production\nSEARCH_API_KEY=\u003Capi-key>  # Only required for AzureKeyCredential auth\n```\n\n## Authentication\n\n**Microsoft Entra Token Credential**:\n```csharp\nusing Azure.Identity;\nusing Azure.Search.Documents;\n\n\u002F\u002F Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=\u003Cspecific_credential>\nvar credential = new DefaultAzureCredential(\n    DefaultAzureCredential.DefaultEnvironmentVariableName\n);\n\u002F\u002F Or use a specific credential directly in production:\n\u002F\u002F See https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Foverview\u002Fazure\u002Fidentity-readme?view=azure-dotnet#credential-classes\n\u002F\u002F var credential = new ManagedIdentityCredential();\nvar client = new SearchClient(\n    new Uri(Environment.GetEnvironmentVariable(\"SEARCH_ENDPOINT\")),\n    Environment.GetEnvironmentVariable(\"SEARCH_INDEX_NAME\"),\n    credential);\n```\n\n**API Key**:\n```csharp\nusing Azure;\nusing Azure.Search.Documents;\n\nvar credential = new AzureKeyCredential(\n    Environment.GetEnvironmentVariable(\"SEARCH_API_KEY\"));\nvar client = new SearchClient(\n    new Uri(Environment.GetEnvironmentVariable(\"SEARCH_ENDPOINT\")),\n    Environment.GetEnvironmentVariable(\"SEARCH_INDEX_NAME\"),\n    credential);\n```\n\n## Client Selection\n\n| Client | Purpose |\n|--------|---------|\n| `SearchClient` | Query indexes, upload\u002Fupdate\u002Fdelete documents |\n| `SearchIndexClient` | Create\u002Fmanage indexes, synonym maps |\n| `SearchIndexerClient` | Manage indexers, skillsets, data sources |\n\n## Index Creation\n\n### Using FieldBuilder (Recommended)\n\n```csharp\nusing Azure.Search.Documents.Indexes;\nusing Azure.Search.Documents.Indexes.Models;\n\n\u002F\u002F Define model with attributes\npublic class Hotel\n{\n    [SimpleField(IsKey = true, IsFilterable = true)]\n    public string HotelId { get; set; }\n\n    [SearchableField(IsSortable = true)]\n    public string HotelName { get; set; }\n\n    [SearchableField(AnalyzerName = LexicalAnalyzerName.EnLucene)]\n    public string Description { get; set; }\n\n    [SimpleField(IsFilterable = true, IsSortable = true, IsFacetable = true)]\n    public double? Rating { get; set; }\n\n    [VectorSearchField(VectorSearchDimensions = 1536, VectorSearchProfileName = \"vector-profile\")]\n    public ReadOnlyMemory\u003Cfloat>? DescriptionVector { get; set; }\n}\n\n\u002F\u002F Create index\nvar indexClient = new SearchIndexClient(endpoint, credential);\nvar fieldBuilder = new FieldBuilder();\nvar fields = fieldBuilder.Build(typeof(Hotel));\n\nvar index = new SearchIndex(\"hotels\")\n{\n    Fields = fields,\n    VectorSearch = new VectorSearch\n    {\n        Profiles = { new VectorSearchProfile(\"vector-profile\", \"hnsw-algo\") },\n        Algorithms = { new HnswAlgorithmConfiguration(\"hnsw-algo\") }\n    }\n};\n\nawait indexClient.CreateOrUpdateIndexAsync(index);\n```\n\n### Manual Field Definition\n\n```csharp\nvar index = new SearchIndex(\"hotels\")\n{\n    Fields =\n    {\n        new SimpleField(\"hotelId\", SearchFieldDataType.String) { IsKey = true, IsFilterable = true },\n        new SearchableField(\"hotelName\") { IsSortable = true },\n        new SearchableField(\"description\") { AnalyzerName = LexicalAnalyzerName.EnLucene },\n        new SimpleField(\"rating\", SearchFieldDataType.Double) { IsFilterable = true, IsSortable = true },\n        new SearchField(\"descriptionVector\", SearchFieldDataType.Collection(SearchFieldDataType.Single))\n        {\n            VectorSearchDimensions = 1536,\n            VectorSearchProfileName = \"vector-profile\"\n        }\n    }\n};\n```\n\n## Document Operations\n\n```csharp\nvar searchClient = new SearchClient(endpoint, indexName, credential);\n\n\u002F\u002F Upload (add new)\nvar hotels = new[] { new Hotel { HotelId = \"1\", HotelName = \"Hotel A\" } };\nawait searchClient.UploadDocumentsAsync(hotels);\n\n\u002F\u002F Merge (update existing)\nawait searchClient.MergeDocumentsAsync(hotels);\n\n\u002F\u002F Merge or Upload (upsert)\nawait searchClient.MergeOrUploadDocumentsAsync(hotels);\n\n\u002F\u002F Delete\nawait searchClient.DeleteDocumentsAsync(\"hotelId\", new[] { \"1\", \"2\" });\n\n\u002F\u002F Batch operations\nvar batch = IndexDocumentsBatch.Create(\n    IndexDocumentsAction.Upload(hotel1),\n    IndexDocumentsAction.Merge(hotel2),\n    IndexDocumentsAction.Delete(hotel3));\nawait searchClient.IndexDocumentsAsync(batch);\n```\n\n## Search Patterns\n\n### Basic Search\n\n```csharp\nvar options = new SearchOptions\n{\n    Filter = \"rating ge 4\",\n    OrderBy = { \"rating desc\" },\n    Select = { \"hotelId\", \"hotelName\", \"rating\" },\n    Size = 10,\n    Skip = 0,\n    IncludeTotalCount = true\n};\n\nSearchResults\u003CHotel> results = await searchClient.SearchAsync\u003CHotel>(\"luxury\", options);\n\nConsole.WriteLine($\"Total: {results.TotalCount}\");\nawait foreach (SearchResult\u003CHotel> result in results.GetResultsAsync())\n{\n    Console.WriteLine($\"{result.Document.HotelName} (Score: {result.Score})\");\n}\n```\n\n### Faceted Search\n\n```csharp\nvar options = new SearchOptions\n{\n    Facets = { \"rating,count:5\", \"category\" }\n};\n\nvar results = await searchClient.SearchAsync\u003CHotel>(\"*\", options);\n\nforeach (var facet in results.Value.Facets[\"rating\"])\n{\n    Console.WriteLine($\"Rating {facet.Value}: {facet.Count}\");\n}\n```\n\n### Autocomplete and Suggestions\n\n```csharp\n\u002F\u002F Autocomplete\nvar autocompleteOptions = new AutocompleteOptions { Mode = AutocompleteMode.OneTermWithContext };\nvar autocomplete = await searchClient.AutocompleteAsync(\"lux\", \"suggester-name\", autocompleteOptions);\n\n\u002F\u002F Suggestions\nvar suggestOptions = new SuggestOptions { UseFuzzyMatching = true };\nvar suggestions = await searchClient.SuggestAsync\u003CHotel>(\"lux\", \"suggester-name\", suggestOptions);\n```\n\n## Vector Search\n\nSee [references\u002Fvector-search.md](references\u002Fvector-search.md) for detailed patterns.\n\n```csharp\nusing Azure.Search.Documents.Models;\n\n\u002F\u002F Pure vector search\nvar vectorQuery = new VectorizedQuery(embedding)\n{\n    KNearestNeighborsCount = 5,\n    Fields = { \"descriptionVector\" }\n};\n\nvar options = new SearchOptions\n{\n    VectorSearch = new VectorSearchOptions\n    {\n        Queries = { vectorQuery }\n    }\n};\n\nvar results = await searchClient.SearchAsync\u003CHotel>(null, options);\n```\n\n## Semantic Search\n\nSee [references\u002Fsemantic-search.md](references\u002Fsemantic-search.md) for detailed patterns.\n\n```csharp\nvar options = new SearchOptions\n{\n    QueryType = SearchQueryType.Semantic,\n    SemanticSearch = new SemanticSearchOptions\n    {\n        SemanticConfigurationName = \"my-semantic-config\",\n        QueryCaption = new QueryCaption(QueryCaptionType.Extractive),\n        QueryAnswer = new QueryAnswer(QueryAnswerType.Extractive)\n    }\n};\n\nvar results = await searchClient.SearchAsync\u003CHotel>(\"best hotel for families\", options);\n\n\u002F\u002F Access semantic answers\nforeach (var answer in results.Value.SemanticSearch.Answers)\n{\n    Console.WriteLine($\"Answer: {answer.Text} (Score: {answer.Score})\");\n}\n\n\u002F\u002F Access captions\nawait foreach (var result in results.Value.GetResultsAsync())\n{\n    var caption = result.SemanticSearch?.Captions?.FirstOrDefault();\n    Console.WriteLine($\"Caption: {caption?.Text}\");\n}\n```\n\n## Hybrid Search (Vector + Keyword + Semantic)\n\n```csharp\nvar vectorQuery = new VectorizedQuery(embedding)\n{\n    KNearestNeighborsCount = 5,\n    Fields = { \"descriptionVector\" }\n};\n\nvar options = new SearchOptions\n{\n    QueryType = SearchQueryType.Semantic,\n    SemanticSearch = new SemanticSearchOptions\n    {\n        SemanticConfigurationName = \"my-semantic-config\"\n    },\n    VectorSearch = new VectorSearchOptions\n    {\n        Queries = { vectorQuery }\n    }\n};\n\n\u002F\u002F Combines keyword search, vector search, and semantic ranking\nvar results = await searchClient.SearchAsync\u003CHotel>(\"luxury beachfront\", options);\n```\n\n## Field Attributes Reference\n\n| Attribute | Purpose |\n|-----------|---------|\n| `SimpleField` | Non-searchable field (filters, sorting, facets) |\n| `SearchableField` | Full-text searchable field |\n| `VectorSearchField` | Vector embedding field |\n| `IsKey = true` | Document key (required, one per index) |\n| `IsFilterable = true` | Enable $filter expressions |\n| `IsSortable = true` | Enable $orderby |\n| `IsFacetable = true` | Enable faceted navigation |\n| `IsHidden = true` | Exclude from results |\n| `AnalyzerName` | Specify text analyzer |\n\n## Error Handling\n\n```csharp\nusing Azure;\n\ntry\n{\n    var results = await searchClient.SearchAsync\u003CHotel>(\"query\");\n}\ncatch (RequestFailedException ex) when (ex.Status == 404)\n{\n    Console.WriteLine(\"Index not found\");\n}\ncatch (RequestFailedException ex)\n{\n    Console.WriteLine($\"Search error: {ex.Status} - {ex.ErrorCode}: {ex.Message}\");\n}\n```\n\n## Best Practices\n\n1. **Use `DefaultAzureCredential`** over API keys for production\n2. **Use `FieldBuilder`** with model attributes for type-safe index definitions\n3. **Use `CreateOrUpdateIndexAsync`** for idempotent index creation\n4. **Batch document operations** for better throughput\n5. **Use `Select`** to return only needed fields\n6. **Configure semantic search** for natural language queries\n7. **Combine vector + keyword + semantic** for best relevance\n\n## Reference Files\n\n| File | Contents |\n|------|----------|\n| [references\u002Fvector-search.md](references\u002Fvector-search.md) | Vector search, hybrid search, vectorizers |\n| [references\u002Fsemantic-search.md](references\u002Fsemantic-search.md) | Semantic ranking, captions, answers |\n",{"data":43,"body":47},{"name":4,"description":6,"license":28,"metadata":44},{"author":9,"version":45,"package":46},"1.0.0","Azure.Search.Documents",{"type":48,"children":49},"root",[50,59,65,72,133,144,150,280,286,296,428,437,510,516,595,601,608,934,940,1062,1068,1238,1244,1250,1387,1393,1481,1487,1549,1555,1568,1709,1715,1725,1920,1926,2084,2090,2264,2270,2381,2387,2483,2489,2541],{"type":51,"tag":52,"props":53,"children":55},"element","h1",{"id":54},"azuresearchdocuments-net",[56],{"type":57,"value":58},"text","Azure.Search.Documents (.NET)",{"type":51,"tag":60,"props":61,"children":62},"p",{},[63],{"type":57,"value":64},"Build search applications with full-text, vector, semantic, and hybrid search capabilities.",{"type":51,"tag":66,"props":67,"children":69},"h2",{"id":68},"installation",[70],{"type":57,"value":71},"Installation",{"type":51,"tag":73,"props":74,"children":79},"pre",{"className":75,"code":76,"language":77,"meta":78,"style":78},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","dotnet add package Azure.Search.Documents\ndotnet add package Azure.Identity\n","bash","",[80],{"type":51,"tag":81,"props":82,"children":83},"code",{"__ignoreMap":78},[84,112],{"type":51,"tag":85,"props":86,"children":89},"span",{"class":87,"line":88},"line",1,[90,96,102,107],{"type":51,"tag":85,"props":91,"children":93},{"style":92},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[94],{"type":57,"value":95},"dotnet",{"type":51,"tag":85,"props":97,"children":99},{"style":98},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[100],{"type":57,"value":101}," add",{"type":51,"tag":85,"props":103,"children":104},{"style":98},[105],{"type":57,"value":106}," package",{"type":51,"tag":85,"props":108,"children":109},{"style":98},[110],{"type":57,"value":111}," Azure.Search.Documents\n",{"type":51,"tag":85,"props":113,"children":115},{"class":87,"line":114},2,[116,120,124,128],{"type":51,"tag":85,"props":117,"children":118},{"style":92},[119],{"type":57,"value":95},{"type":51,"tag":85,"props":121,"children":122},{"style":98},[123],{"type":57,"value":101},{"type":51,"tag":85,"props":125,"children":126},{"style":98},[127],{"type":57,"value":106},{"type":51,"tag":85,"props":129,"children":130},{"style":98},[131],{"type":57,"value":132}," Azure.Identity\n",{"type":51,"tag":60,"props":134,"children":135},{},[136,142],{"type":51,"tag":137,"props":138,"children":139},"strong",{},[140],{"type":57,"value":141},"Current Versions",{"type":57,"value":143},": Stable v11.7.0, Preview v11.8.0-beta.1",{"type":51,"tag":66,"props":145,"children":147},{"id":146},"environment-variables",[148],{"type":57,"value":149},"Environment Variables",{"type":51,"tag":73,"props":151,"children":153},{"className":75,"code":152,"language":77,"meta":78,"style":78},"SEARCH_ENDPOINT=https:\u002F\u002F\u003Csearch-service>.search.windows.net  # Required: search service endpoint\nSEARCH_INDEX_NAME=\u003Cindex-name>  # Required: search index name\nAZURE_TOKEN_CREDENTIALS=prod  # Required only if DefaultAzureCredential is used in production\nSEARCH_API_KEY=\u003Capi-key>  # Only required for AzureKeyCredential auth\n",[154],{"type":51,"tag":81,"props":155,"children":156},{"__ignoreMap":78},[157,203,230,253],{"type":51,"tag":85,"props":158,"children":159},{"class":87,"line":88},[160,166,172,177,182,187,192,197],{"type":51,"tag":85,"props":161,"children":163},{"style":162},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[164],{"type":57,"value":165},"SEARCH_ENDPOINT",{"type":51,"tag":85,"props":167,"children":169},{"style":168},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[170],{"type":57,"value":171},"=",{"type":51,"tag":85,"props":173,"children":174},{"style":98},[175],{"type":57,"value":176},"https:\u002F\u002F",{"type":51,"tag":85,"props":178,"children":179},{"style":168},[180],{"type":57,"value":181},"\u003C",{"type":51,"tag":85,"props":183,"children":184},{"style":98},[185],{"type":57,"value":186},"search-service",{"type":51,"tag":85,"props":188,"children":189},{"style":168},[190],{"type":57,"value":191},">",{"type":51,"tag":85,"props":193,"children":194},{"style":98},[195],{"type":57,"value":196},".search.windows.net",{"type":51,"tag":85,"props":198,"children":200},{"style":199},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[201],{"type":57,"value":202},"  # Required: search service endpoint\n",{"type":51,"tag":85,"props":204,"children":205},{"class":87,"line":114},[206,211,216,221,225],{"type":51,"tag":85,"props":207,"children":208},{"style":162},[209],{"type":57,"value":210},"SEARCH_INDEX_NAME",{"type":51,"tag":85,"props":212,"children":213},{"style":168},[214],{"type":57,"value":215},"=\u003C",{"type":51,"tag":85,"props":217,"children":218},{"style":98},[219],{"type":57,"value":220},"index-name",{"type":51,"tag":85,"props":222,"children":223},{"style":168},[224],{"type":57,"value":191},{"type":51,"tag":85,"props":226,"children":227},{"style":199},[228],{"type":57,"value":229},"  # Required: search index name\n",{"type":51,"tag":85,"props":231,"children":233},{"class":87,"line":232},3,[234,239,243,248],{"type":51,"tag":85,"props":235,"children":236},{"style":162},[237],{"type":57,"value":238},"AZURE_TOKEN_CREDENTIALS",{"type":51,"tag":85,"props":240,"children":241},{"style":168},[242],{"type":57,"value":171},{"type":51,"tag":85,"props":244,"children":245},{"style":98},[246],{"type":57,"value":247},"prod",{"type":51,"tag":85,"props":249,"children":250},{"style":199},[251],{"type":57,"value":252},"  # Required only if DefaultAzureCredential is used in production\n",{"type":51,"tag":85,"props":254,"children":256},{"class":87,"line":255},4,[257,262,266,271,275],{"type":51,"tag":85,"props":258,"children":259},{"style":162},[260],{"type":57,"value":261},"SEARCH_API_KEY",{"type":51,"tag":85,"props":263,"children":264},{"style":168},[265],{"type":57,"value":215},{"type":51,"tag":85,"props":267,"children":268},{"style":98},[269],{"type":57,"value":270},"api-key",{"type":51,"tag":85,"props":272,"children":273},{"style":168},[274],{"type":57,"value":191},{"type":51,"tag":85,"props":276,"children":277},{"style":199},[278],{"type":57,"value":279},"  # Only required for AzureKeyCredential auth\n",{"type":51,"tag":66,"props":281,"children":283},{"id":282},"authentication",[284],{"type":57,"value":285},"Authentication",{"type":51,"tag":60,"props":287,"children":288},{},[289,294],{"type":51,"tag":137,"props":290,"children":291},{},[292],{"type":57,"value":293},"Microsoft Entra Token Credential",{"type":57,"value":295},":",{"type":51,"tag":73,"props":297,"children":301},{"className":298,"code":299,"language":300,"meta":78,"style":78},"language-csharp shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","using Azure.Identity;\nusing Azure.Search.Documents;\n\n\u002F\u002F Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=\u003Cspecific_credential>\nvar credential = new DefaultAzureCredential(\n    DefaultAzureCredential.DefaultEnvironmentVariableName\n);\n\u002F\u002F Or use a specific credential directly in production:\n\u002F\u002F See https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Foverview\u002Fazure\u002Fidentity-readme?view=azure-dotnet#credential-classes\n\u002F\u002F var credential = new ManagedIdentityCredential();\nvar client = new SearchClient(\n    new Uri(Environment.GetEnvironmentVariable(\"SEARCH_ENDPOINT\")),\n    Environment.GetEnvironmentVariable(\"SEARCH_INDEX_NAME\"),\n    credential);\n","csharp",[302],{"type":51,"tag":81,"props":303,"children":304},{"__ignoreMap":78},[305,313,321,330,338,347,356,365,374,383,392,401,410,419],{"type":51,"tag":85,"props":306,"children":307},{"class":87,"line":88},[308],{"type":51,"tag":85,"props":309,"children":310},{},[311],{"type":57,"value":312},"using Azure.Identity;\n",{"type":51,"tag":85,"props":314,"children":315},{"class":87,"line":114},[316],{"type":51,"tag":85,"props":317,"children":318},{},[319],{"type":57,"value":320},"using Azure.Search.Documents;\n",{"type":51,"tag":85,"props":322,"children":323},{"class":87,"line":232},[324],{"type":51,"tag":85,"props":325,"children":327},{"emptyLinePlaceholder":326},true,[328],{"type":57,"value":329},"\n",{"type":51,"tag":85,"props":331,"children":332},{"class":87,"line":255},[333],{"type":51,"tag":85,"props":334,"children":335},{},[336],{"type":57,"value":337},"\u002F\u002F Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=\u003Cspecific_credential>\n",{"type":51,"tag":85,"props":339,"children":341},{"class":87,"line":340},5,[342],{"type":51,"tag":85,"props":343,"children":344},{},[345],{"type":57,"value":346},"var credential = new DefaultAzureCredential(\n",{"type":51,"tag":85,"props":348,"children":350},{"class":87,"line":349},6,[351],{"type":51,"tag":85,"props":352,"children":353},{},[354],{"type":57,"value":355},"    DefaultAzureCredential.DefaultEnvironmentVariableName\n",{"type":51,"tag":85,"props":357,"children":359},{"class":87,"line":358},7,[360],{"type":51,"tag":85,"props":361,"children":362},{},[363],{"type":57,"value":364},");\n",{"type":51,"tag":85,"props":366,"children":368},{"class":87,"line":367},8,[369],{"type":51,"tag":85,"props":370,"children":371},{},[372],{"type":57,"value":373},"\u002F\u002F Or use a specific credential directly in production:\n",{"type":51,"tag":85,"props":375,"children":377},{"class":87,"line":376},9,[378],{"type":51,"tag":85,"props":379,"children":380},{},[381],{"type":57,"value":382},"\u002F\u002F See https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Foverview\u002Fazure\u002Fidentity-readme?view=azure-dotnet#credential-classes\n",{"type":51,"tag":85,"props":384,"children":386},{"class":87,"line":385},10,[387],{"type":51,"tag":85,"props":388,"children":389},{},[390],{"type":57,"value":391},"\u002F\u002F var credential = new ManagedIdentityCredential();\n",{"type":51,"tag":85,"props":393,"children":395},{"class":87,"line":394},11,[396],{"type":51,"tag":85,"props":397,"children":398},{},[399],{"type":57,"value":400},"var client = new SearchClient(\n",{"type":51,"tag":85,"props":402,"children":404},{"class":87,"line":403},12,[405],{"type":51,"tag":85,"props":406,"children":407},{},[408],{"type":57,"value":409},"    new Uri(Environment.GetEnvironmentVariable(\"SEARCH_ENDPOINT\")),\n",{"type":51,"tag":85,"props":411,"children":413},{"class":87,"line":412},13,[414],{"type":51,"tag":85,"props":415,"children":416},{},[417],{"type":57,"value":418},"    Environment.GetEnvironmentVariable(\"SEARCH_INDEX_NAME\"),\n",{"type":51,"tag":85,"props":420,"children":422},{"class":87,"line":421},14,[423],{"type":51,"tag":85,"props":424,"children":425},{},[426],{"type":57,"value":427},"    credential);\n",{"type":51,"tag":60,"props":429,"children":430},{},[431,436],{"type":51,"tag":137,"props":432,"children":433},{},[434],{"type":57,"value":435},"API Key",{"type":57,"value":295},{"type":51,"tag":73,"props":438,"children":440},{"className":298,"code":439,"language":300,"meta":78,"style":78},"using Azure;\nusing Azure.Search.Documents;\n\nvar credential = new AzureKeyCredential(\n    Environment.GetEnvironmentVariable(\"SEARCH_API_KEY\"));\nvar client = new SearchClient(\n    new Uri(Environment.GetEnvironmentVariable(\"SEARCH_ENDPOINT\")),\n    Environment.GetEnvironmentVariable(\"SEARCH_INDEX_NAME\"),\n    credential);\n",[441],{"type":51,"tag":81,"props":442,"children":443},{"__ignoreMap":78},[444,452,459,466,474,482,489,496,503],{"type":51,"tag":85,"props":445,"children":446},{"class":87,"line":88},[447],{"type":51,"tag":85,"props":448,"children":449},{},[450],{"type":57,"value":451},"using Azure;\n",{"type":51,"tag":85,"props":453,"children":454},{"class":87,"line":114},[455],{"type":51,"tag":85,"props":456,"children":457},{},[458],{"type":57,"value":320},{"type":51,"tag":85,"props":460,"children":461},{"class":87,"line":232},[462],{"type":51,"tag":85,"props":463,"children":464},{"emptyLinePlaceholder":326},[465],{"type":57,"value":329},{"type":51,"tag":85,"props":467,"children":468},{"class":87,"line":255},[469],{"type":51,"tag":85,"props":470,"children":471},{},[472],{"type":57,"value":473},"var credential = new AzureKeyCredential(\n",{"type":51,"tag":85,"props":475,"children":476},{"class":87,"line":340},[477],{"type":51,"tag":85,"props":478,"children":479},{},[480],{"type":57,"value":481},"    Environment.GetEnvironmentVariable(\"SEARCH_API_KEY\"));\n",{"type":51,"tag":85,"props":483,"children":484},{"class":87,"line":349},[485],{"type":51,"tag":85,"props":486,"children":487},{},[488],{"type":57,"value":400},{"type":51,"tag":85,"props":490,"children":491},{"class":87,"line":358},[492],{"type":51,"tag":85,"props":493,"children":494},{},[495],{"type":57,"value":409},{"type":51,"tag":85,"props":497,"children":498},{"class":87,"line":367},[499],{"type":51,"tag":85,"props":500,"children":501},{},[502],{"type":57,"value":418},{"type":51,"tag":85,"props":504,"children":505},{"class":87,"line":376},[506],{"type":51,"tag":85,"props":507,"children":508},{},[509],{"type":57,"value":427},{"type":51,"tag":66,"props":511,"children":513},{"id":512},"client-selection",[514],{"type":57,"value":515},"Client Selection",{"type":51,"tag":517,"props":518,"children":519},"table",{},[520,539],{"type":51,"tag":521,"props":522,"children":523},"thead",{},[524],{"type":51,"tag":525,"props":526,"children":527},"tr",{},[528,534],{"type":51,"tag":529,"props":530,"children":531},"th",{},[532],{"type":57,"value":533},"Client",{"type":51,"tag":529,"props":535,"children":536},{},[537],{"type":57,"value":538},"Purpose",{"type":51,"tag":540,"props":541,"children":542},"tbody",{},[543,561,578],{"type":51,"tag":525,"props":544,"children":545},{},[546,556],{"type":51,"tag":547,"props":548,"children":549},"td",{},[550],{"type":51,"tag":81,"props":551,"children":553},{"className":552},[],[554],{"type":57,"value":555},"SearchClient",{"type":51,"tag":547,"props":557,"children":558},{},[559],{"type":57,"value":560},"Query indexes, upload\u002Fupdate\u002Fdelete documents",{"type":51,"tag":525,"props":562,"children":563},{},[564,573],{"type":51,"tag":547,"props":565,"children":566},{},[567],{"type":51,"tag":81,"props":568,"children":570},{"className":569},[],[571],{"type":57,"value":572},"SearchIndexClient",{"type":51,"tag":547,"props":574,"children":575},{},[576],{"type":57,"value":577},"Create\u002Fmanage indexes, synonym maps",{"type":51,"tag":525,"props":579,"children":580},{},[581,590],{"type":51,"tag":547,"props":582,"children":583},{},[584],{"type":51,"tag":81,"props":585,"children":587},{"className":586},[],[588],{"type":57,"value":589},"SearchIndexerClient",{"type":51,"tag":547,"props":591,"children":592},{},[593],{"type":57,"value":594},"Manage indexers, skillsets, data sources",{"type":51,"tag":66,"props":596,"children":598},{"id":597},"index-creation",[599],{"type":57,"value":600},"Index Creation",{"type":51,"tag":602,"props":603,"children":605},"h3",{"id":604},"using-fieldbuilder-recommended",[606],{"type":57,"value":607},"Using FieldBuilder (Recommended)",{"type":51,"tag":73,"props":609,"children":611},{"className":298,"code":610,"language":300,"meta":78,"style":78},"using Azure.Search.Documents.Indexes;\nusing Azure.Search.Documents.Indexes.Models;\n\n\u002F\u002F Define model with attributes\npublic class Hotel\n{\n    [SimpleField(IsKey = true, IsFilterable = true)]\n    public string HotelId { get; set; }\n\n    [SearchableField(IsSortable = true)]\n    public string HotelName { get; set; }\n\n    [SearchableField(AnalyzerName = LexicalAnalyzerName.EnLucene)]\n    public string Description { get; set; }\n\n    [SimpleField(IsFilterable = true, IsSortable = true, IsFacetable = true)]\n    public double? Rating { get; set; }\n\n    [VectorSearchField(VectorSearchDimensions = 1536, VectorSearchProfileName = \"vector-profile\")]\n    public ReadOnlyMemory\u003Cfloat>? DescriptionVector { get; set; }\n}\n\n\u002F\u002F Create index\nvar indexClient = new SearchIndexClient(endpoint, credential);\nvar fieldBuilder = new FieldBuilder();\nvar fields = fieldBuilder.Build(typeof(Hotel));\n\nvar index = new SearchIndex(\"hotels\")\n{\n    Fields = fields,\n    VectorSearch = new VectorSearch\n    {\n        Profiles = { new VectorSearchProfile(\"vector-profile\", \"hnsw-algo\") },\n        Algorithms = { new HnswAlgorithmConfiguration(\"hnsw-algo\") }\n    }\n};\n\nawait indexClient.CreateOrUpdateIndexAsync(index);\n",[612],{"type":51,"tag":81,"props":613,"children":614},{"__ignoreMap":78},[615,623,631,638,646,654,662,670,678,685,693,701,708,716,724,732,741,750,758,767,776,785,793,802,811,820,829,837,846,854,863,872,881,890,899,908,917,925],{"type":51,"tag":85,"props":616,"children":617},{"class":87,"line":88},[618],{"type":51,"tag":85,"props":619,"children":620},{},[621],{"type":57,"value":622},"using Azure.Search.Documents.Indexes;\n",{"type":51,"tag":85,"props":624,"children":625},{"class":87,"line":114},[626],{"type":51,"tag":85,"props":627,"children":628},{},[629],{"type":57,"value":630},"using Azure.Search.Documents.Indexes.Models;\n",{"type":51,"tag":85,"props":632,"children":633},{"class":87,"line":232},[634],{"type":51,"tag":85,"props":635,"children":636},{"emptyLinePlaceholder":326},[637],{"type":57,"value":329},{"type":51,"tag":85,"props":639,"children":640},{"class":87,"line":255},[641],{"type":51,"tag":85,"props":642,"children":643},{},[644],{"type":57,"value":645},"\u002F\u002F Define model with attributes\n",{"type":51,"tag":85,"props":647,"children":648},{"class":87,"line":340},[649],{"type":51,"tag":85,"props":650,"children":651},{},[652],{"type":57,"value":653},"public class Hotel\n",{"type":51,"tag":85,"props":655,"children":656},{"class":87,"line":349},[657],{"type":51,"tag":85,"props":658,"children":659},{},[660],{"type":57,"value":661},"{\n",{"type":51,"tag":85,"props":663,"children":664},{"class":87,"line":358},[665],{"type":51,"tag":85,"props":666,"children":667},{},[668],{"type":57,"value":669},"    [SimpleField(IsKey = true, IsFilterable = true)]\n",{"type":51,"tag":85,"props":671,"children":672},{"class":87,"line":367},[673],{"type":51,"tag":85,"props":674,"children":675},{},[676],{"type":57,"value":677},"    public string HotelId { get; set; }\n",{"type":51,"tag":85,"props":679,"children":680},{"class":87,"line":376},[681],{"type":51,"tag":85,"props":682,"children":683},{"emptyLinePlaceholder":326},[684],{"type":57,"value":329},{"type":51,"tag":85,"props":686,"children":687},{"class":87,"line":385},[688],{"type":51,"tag":85,"props":689,"children":690},{},[691],{"type":57,"value":692},"    [SearchableField(IsSortable = true)]\n",{"type":51,"tag":85,"props":694,"children":695},{"class":87,"line":394},[696],{"type":51,"tag":85,"props":697,"children":698},{},[699],{"type":57,"value":700},"    public string HotelName { get; set; }\n",{"type":51,"tag":85,"props":702,"children":703},{"class":87,"line":403},[704],{"type":51,"tag":85,"props":705,"children":706},{"emptyLinePlaceholder":326},[707],{"type":57,"value":329},{"type":51,"tag":85,"props":709,"children":710},{"class":87,"line":412},[711],{"type":51,"tag":85,"props":712,"children":713},{},[714],{"type":57,"value":715},"    [SearchableField(AnalyzerName = LexicalAnalyzerName.EnLucene)]\n",{"type":51,"tag":85,"props":717,"children":718},{"class":87,"line":421},[719],{"type":51,"tag":85,"props":720,"children":721},{},[722],{"type":57,"value":723},"    public string Description { get; set; }\n",{"type":51,"tag":85,"props":725,"children":727},{"class":87,"line":726},15,[728],{"type":51,"tag":85,"props":729,"children":730},{"emptyLinePlaceholder":326},[731],{"type":57,"value":329},{"type":51,"tag":85,"props":733,"children":735},{"class":87,"line":734},16,[736],{"type":51,"tag":85,"props":737,"children":738},{},[739],{"type":57,"value":740},"    [SimpleField(IsFilterable = true, IsSortable = true, IsFacetable = true)]\n",{"type":51,"tag":85,"props":742,"children":744},{"class":87,"line":743},17,[745],{"type":51,"tag":85,"props":746,"children":747},{},[748],{"type":57,"value":749},"    public double? Rating { get; set; }\n",{"type":51,"tag":85,"props":751,"children":753},{"class":87,"line":752},18,[754],{"type":51,"tag":85,"props":755,"children":756},{"emptyLinePlaceholder":326},[757],{"type":57,"value":329},{"type":51,"tag":85,"props":759,"children":761},{"class":87,"line":760},19,[762],{"type":51,"tag":85,"props":763,"children":764},{},[765],{"type":57,"value":766},"    [VectorSearchField(VectorSearchDimensions = 1536, VectorSearchProfileName = \"vector-profile\")]\n",{"type":51,"tag":85,"props":768,"children":770},{"class":87,"line":769},20,[771],{"type":51,"tag":85,"props":772,"children":773},{},[774],{"type":57,"value":775},"    public ReadOnlyMemory\u003Cfloat>? DescriptionVector { get; set; }\n",{"type":51,"tag":85,"props":777,"children":779},{"class":87,"line":778},21,[780],{"type":51,"tag":85,"props":781,"children":782},{},[783],{"type":57,"value":784},"}\n",{"type":51,"tag":85,"props":786,"children":788},{"class":87,"line":787},22,[789],{"type":51,"tag":85,"props":790,"children":791},{"emptyLinePlaceholder":326},[792],{"type":57,"value":329},{"type":51,"tag":85,"props":794,"children":796},{"class":87,"line":795},23,[797],{"type":51,"tag":85,"props":798,"children":799},{},[800],{"type":57,"value":801},"\u002F\u002F Create index\n",{"type":51,"tag":85,"props":803,"children":805},{"class":87,"line":804},24,[806],{"type":51,"tag":85,"props":807,"children":808},{},[809],{"type":57,"value":810},"var indexClient = new SearchIndexClient(endpoint, credential);\n",{"type":51,"tag":85,"props":812,"children":814},{"class":87,"line":813},25,[815],{"type":51,"tag":85,"props":816,"children":817},{},[818],{"type":57,"value":819},"var fieldBuilder = new FieldBuilder();\n",{"type":51,"tag":85,"props":821,"children":823},{"class":87,"line":822},26,[824],{"type":51,"tag":85,"props":825,"children":826},{},[827],{"type":57,"value":828},"var fields = fieldBuilder.Build(typeof(Hotel));\n",{"type":51,"tag":85,"props":830,"children":832},{"class":87,"line":831},27,[833],{"type":51,"tag":85,"props":834,"children":835},{"emptyLinePlaceholder":326},[836],{"type":57,"value":329},{"type":51,"tag":85,"props":838,"children":840},{"class":87,"line":839},28,[841],{"type":51,"tag":85,"props":842,"children":843},{},[844],{"type":57,"value":845},"var index = new SearchIndex(\"hotels\")\n",{"type":51,"tag":85,"props":847,"children":849},{"class":87,"line":848},29,[850],{"type":51,"tag":85,"props":851,"children":852},{},[853],{"type":57,"value":661},{"type":51,"tag":85,"props":855,"children":857},{"class":87,"line":856},30,[858],{"type":51,"tag":85,"props":859,"children":860},{},[861],{"type":57,"value":862},"    Fields = fields,\n",{"type":51,"tag":85,"props":864,"children":866},{"class":87,"line":865},31,[867],{"type":51,"tag":85,"props":868,"children":869},{},[870],{"type":57,"value":871},"    VectorSearch = new VectorSearch\n",{"type":51,"tag":85,"props":873,"children":875},{"class":87,"line":874},32,[876],{"type":51,"tag":85,"props":877,"children":878},{},[879],{"type":57,"value":880},"    {\n",{"type":51,"tag":85,"props":882,"children":884},{"class":87,"line":883},33,[885],{"type":51,"tag":85,"props":886,"children":887},{},[888],{"type":57,"value":889},"        Profiles = { new VectorSearchProfile(\"vector-profile\", \"hnsw-algo\") },\n",{"type":51,"tag":85,"props":891,"children":893},{"class":87,"line":892},34,[894],{"type":51,"tag":85,"props":895,"children":896},{},[897],{"type":57,"value":898},"        Algorithms = { new HnswAlgorithmConfiguration(\"hnsw-algo\") }\n",{"type":51,"tag":85,"props":900,"children":902},{"class":87,"line":901},35,[903],{"type":51,"tag":85,"props":904,"children":905},{},[906],{"type":57,"value":907},"    }\n",{"type":51,"tag":85,"props":909,"children":911},{"class":87,"line":910},36,[912],{"type":51,"tag":85,"props":913,"children":914},{},[915],{"type":57,"value":916},"};\n",{"type":51,"tag":85,"props":918,"children":920},{"class":87,"line":919},37,[921],{"type":51,"tag":85,"props":922,"children":923},{"emptyLinePlaceholder":326},[924],{"type":57,"value":329},{"type":51,"tag":85,"props":926,"children":928},{"class":87,"line":927},38,[929],{"type":51,"tag":85,"props":930,"children":931},{},[932],{"type":57,"value":933},"await indexClient.CreateOrUpdateIndexAsync(index);\n",{"type":51,"tag":602,"props":935,"children":937},{"id":936},"manual-field-definition",[938],{"type":57,"value":939},"Manual Field Definition",{"type":51,"tag":73,"props":941,"children":943},{"className":298,"code":942,"language":300,"meta":78,"style":78},"var index = new SearchIndex(\"hotels\")\n{\n    Fields =\n    {\n        new SimpleField(\"hotelId\", SearchFieldDataType.String) { IsKey = true, IsFilterable = true },\n        new SearchableField(\"hotelName\") { IsSortable = true },\n        new SearchableField(\"description\") { AnalyzerName = LexicalAnalyzerName.EnLucene },\n        new SimpleField(\"rating\", SearchFieldDataType.Double) { IsFilterable = true, IsSortable = true },\n        new SearchField(\"descriptionVector\", SearchFieldDataType.Collection(SearchFieldDataType.Single))\n        {\n            VectorSearchDimensions = 1536,\n            VectorSearchProfileName = \"vector-profile\"\n        }\n    }\n};\n",[944],{"type":51,"tag":81,"props":945,"children":946},{"__ignoreMap":78},[947,954,961,969,976,984,992,1000,1008,1016,1024,1032,1040,1048,1055],{"type":51,"tag":85,"props":948,"children":949},{"class":87,"line":88},[950],{"type":51,"tag":85,"props":951,"children":952},{},[953],{"type":57,"value":845},{"type":51,"tag":85,"props":955,"children":956},{"class":87,"line":114},[957],{"type":51,"tag":85,"props":958,"children":959},{},[960],{"type":57,"value":661},{"type":51,"tag":85,"props":962,"children":963},{"class":87,"line":232},[964],{"type":51,"tag":85,"props":965,"children":966},{},[967],{"type":57,"value":968},"    Fields =\n",{"type":51,"tag":85,"props":970,"children":971},{"class":87,"line":255},[972],{"type":51,"tag":85,"props":973,"children":974},{},[975],{"type":57,"value":880},{"type":51,"tag":85,"props":977,"children":978},{"class":87,"line":340},[979],{"type":51,"tag":85,"props":980,"children":981},{},[982],{"type":57,"value":983},"        new SimpleField(\"hotelId\", SearchFieldDataType.String) { IsKey = true, IsFilterable = true },\n",{"type":51,"tag":85,"props":985,"children":986},{"class":87,"line":349},[987],{"type":51,"tag":85,"props":988,"children":989},{},[990],{"type":57,"value":991},"        new SearchableField(\"hotelName\") { IsSortable = true },\n",{"type":51,"tag":85,"props":993,"children":994},{"class":87,"line":358},[995],{"type":51,"tag":85,"props":996,"children":997},{},[998],{"type":57,"value":999},"        new SearchableField(\"description\") { AnalyzerName = LexicalAnalyzerName.EnLucene },\n",{"type":51,"tag":85,"props":1001,"children":1002},{"class":87,"line":367},[1003],{"type":51,"tag":85,"props":1004,"children":1005},{},[1006],{"type":57,"value":1007},"        new SimpleField(\"rating\", SearchFieldDataType.Double) { IsFilterable = true, IsSortable = true },\n",{"type":51,"tag":85,"props":1009,"children":1010},{"class":87,"line":376},[1011],{"type":51,"tag":85,"props":1012,"children":1013},{},[1014],{"type":57,"value":1015},"        new SearchField(\"descriptionVector\", SearchFieldDataType.Collection(SearchFieldDataType.Single))\n",{"type":51,"tag":85,"props":1017,"children":1018},{"class":87,"line":385},[1019],{"type":51,"tag":85,"props":1020,"children":1021},{},[1022],{"type":57,"value":1023},"        {\n",{"type":51,"tag":85,"props":1025,"children":1026},{"class":87,"line":394},[1027],{"type":51,"tag":85,"props":1028,"children":1029},{},[1030],{"type":57,"value":1031},"            VectorSearchDimensions = 1536,\n",{"type":51,"tag":85,"props":1033,"children":1034},{"class":87,"line":403},[1035],{"type":51,"tag":85,"props":1036,"children":1037},{},[1038],{"type":57,"value":1039},"            VectorSearchProfileName = \"vector-profile\"\n",{"type":51,"tag":85,"props":1041,"children":1042},{"class":87,"line":412},[1043],{"type":51,"tag":85,"props":1044,"children":1045},{},[1046],{"type":57,"value":1047},"        }\n",{"type":51,"tag":85,"props":1049,"children":1050},{"class":87,"line":421},[1051],{"type":51,"tag":85,"props":1052,"children":1053},{},[1054],{"type":57,"value":907},{"type":51,"tag":85,"props":1056,"children":1057},{"class":87,"line":726},[1058],{"type":51,"tag":85,"props":1059,"children":1060},{},[1061],{"type":57,"value":916},{"type":51,"tag":66,"props":1063,"children":1065},{"id":1064},"document-operations",[1066],{"type":57,"value":1067},"Document Operations",{"type":51,"tag":73,"props":1069,"children":1071},{"className":298,"code":1070,"language":300,"meta":78,"style":78},"var searchClient = new SearchClient(endpoint, indexName, credential);\n\n\u002F\u002F Upload (add new)\nvar hotels = new[] { new Hotel { HotelId = \"1\", HotelName = \"Hotel A\" } };\nawait searchClient.UploadDocumentsAsync(hotels);\n\n\u002F\u002F Merge (update existing)\nawait searchClient.MergeDocumentsAsync(hotels);\n\n\u002F\u002F Merge or Upload (upsert)\nawait searchClient.MergeOrUploadDocumentsAsync(hotels);\n\n\u002F\u002F Delete\nawait searchClient.DeleteDocumentsAsync(\"hotelId\", new[] { \"1\", \"2\" });\n\n\u002F\u002F Batch operations\nvar batch = IndexDocumentsBatch.Create(\n    IndexDocumentsAction.Upload(hotel1),\n    IndexDocumentsAction.Merge(hotel2),\n    IndexDocumentsAction.Delete(hotel3));\nawait searchClient.IndexDocumentsAsync(batch);\n",[1072],{"type":51,"tag":81,"props":1073,"children":1074},{"__ignoreMap":78},[1075,1083,1090,1098,1106,1114,1121,1129,1137,1144,1152,1160,1167,1175,1183,1190,1198,1206,1214,1222,1230],{"type":51,"tag":85,"props":1076,"children":1077},{"class":87,"line":88},[1078],{"type":51,"tag":85,"props":1079,"children":1080},{},[1081],{"type":57,"value":1082},"var searchClient = new SearchClient(endpoint, indexName, credential);\n",{"type":51,"tag":85,"props":1084,"children":1085},{"class":87,"line":114},[1086],{"type":51,"tag":85,"props":1087,"children":1088},{"emptyLinePlaceholder":326},[1089],{"type":57,"value":329},{"type":51,"tag":85,"props":1091,"children":1092},{"class":87,"line":232},[1093],{"type":51,"tag":85,"props":1094,"children":1095},{},[1096],{"type":57,"value":1097},"\u002F\u002F Upload (add new)\n",{"type":51,"tag":85,"props":1099,"children":1100},{"class":87,"line":255},[1101],{"type":51,"tag":85,"props":1102,"children":1103},{},[1104],{"type":57,"value":1105},"var hotels = new[] { new Hotel { HotelId = \"1\", HotelName = \"Hotel A\" } };\n",{"type":51,"tag":85,"props":1107,"children":1108},{"class":87,"line":340},[1109],{"type":51,"tag":85,"props":1110,"children":1111},{},[1112],{"type":57,"value":1113},"await searchClient.UploadDocumentsAsync(hotels);\n",{"type":51,"tag":85,"props":1115,"children":1116},{"class":87,"line":349},[1117],{"type":51,"tag":85,"props":1118,"children":1119},{"emptyLinePlaceholder":326},[1120],{"type":57,"value":329},{"type":51,"tag":85,"props":1122,"children":1123},{"class":87,"line":358},[1124],{"type":51,"tag":85,"props":1125,"children":1126},{},[1127],{"type":57,"value":1128},"\u002F\u002F Merge (update existing)\n",{"type":51,"tag":85,"props":1130,"children":1131},{"class":87,"line":367},[1132],{"type":51,"tag":85,"props":1133,"children":1134},{},[1135],{"type":57,"value":1136},"await searchClient.MergeDocumentsAsync(hotels);\n",{"type":51,"tag":85,"props":1138,"children":1139},{"class":87,"line":376},[1140],{"type":51,"tag":85,"props":1141,"children":1142},{"emptyLinePlaceholder":326},[1143],{"type":57,"value":329},{"type":51,"tag":85,"props":1145,"children":1146},{"class":87,"line":385},[1147],{"type":51,"tag":85,"props":1148,"children":1149},{},[1150],{"type":57,"value":1151},"\u002F\u002F Merge or Upload (upsert)\n",{"type":51,"tag":85,"props":1153,"children":1154},{"class":87,"line":394},[1155],{"type":51,"tag":85,"props":1156,"children":1157},{},[1158],{"type":57,"value":1159},"await searchClient.MergeOrUploadDocumentsAsync(hotels);\n",{"type":51,"tag":85,"props":1161,"children":1162},{"class":87,"line":403},[1163],{"type":51,"tag":85,"props":1164,"children":1165},{"emptyLinePlaceholder":326},[1166],{"type":57,"value":329},{"type":51,"tag":85,"props":1168,"children":1169},{"class":87,"line":412},[1170],{"type":51,"tag":85,"props":1171,"children":1172},{},[1173],{"type":57,"value":1174},"\u002F\u002F Delete\n",{"type":51,"tag":85,"props":1176,"children":1177},{"class":87,"line":421},[1178],{"type":51,"tag":85,"props":1179,"children":1180},{},[1181],{"type":57,"value":1182},"await searchClient.DeleteDocumentsAsync(\"hotelId\", new[] { \"1\", \"2\" });\n",{"type":51,"tag":85,"props":1184,"children":1185},{"class":87,"line":726},[1186],{"type":51,"tag":85,"props":1187,"children":1188},{"emptyLinePlaceholder":326},[1189],{"type":57,"value":329},{"type":51,"tag":85,"props":1191,"children":1192},{"class":87,"line":734},[1193],{"type":51,"tag":85,"props":1194,"children":1195},{},[1196],{"type":57,"value":1197},"\u002F\u002F Batch operations\n",{"type":51,"tag":85,"props":1199,"children":1200},{"class":87,"line":743},[1201],{"type":51,"tag":85,"props":1202,"children":1203},{},[1204],{"type":57,"value":1205},"var batch = IndexDocumentsBatch.Create(\n",{"type":51,"tag":85,"props":1207,"children":1208},{"class":87,"line":752},[1209],{"type":51,"tag":85,"props":1210,"children":1211},{},[1212],{"type":57,"value":1213},"    IndexDocumentsAction.Upload(hotel1),\n",{"type":51,"tag":85,"props":1215,"children":1216},{"class":87,"line":760},[1217],{"type":51,"tag":85,"props":1218,"children":1219},{},[1220],{"type":57,"value":1221},"    IndexDocumentsAction.Merge(hotel2),\n",{"type":51,"tag":85,"props":1223,"children":1224},{"class":87,"line":769},[1225],{"type":51,"tag":85,"props":1226,"children":1227},{},[1228],{"type":57,"value":1229},"    IndexDocumentsAction.Delete(hotel3));\n",{"type":51,"tag":85,"props":1231,"children":1232},{"class":87,"line":778},[1233],{"type":51,"tag":85,"props":1234,"children":1235},{},[1236],{"type":57,"value":1237},"await searchClient.IndexDocumentsAsync(batch);\n",{"type":51,"tag":66,"props":1239,"children":1241},{"id":1240},"search-patterns",[1242],{"type":57,"value":1243},"Search Patterns",{"type":51,"tag":602,"props":1245,"children":1247},{"id":1246},"basic-search",[1248],{"type":57,"value":1249},"Basic Search",{"type":51,"tag":73,"props":1251,"children":1253},{"className":298,"code":1252,"language":300,"meta":78,"style":78},"var options = new SearchOptions\n{\n    Filter = \"rating ge 4\",\n    OrderBy = { \"rating desc\" },\n    Select = { \"hotelId\", \"hotelName\", \"rating\" },\n    Size = 10,\n    Skip = 0,\n    IncludeTotalCount = true\n};\n\nSearchResults\u003CHotel> results = await searchClient.SearchAsync\u003CHotel>(\"luxury\", options);\n\nConsole.WriteLine($\"Total: {results.TotalCount}\");\nawait foreach (SearchResult\u003CHotel> result in results.GetResultsAsync())\n{\n    Console.WriteLine($\"{result.Document.HotelName} (Score: {result.Score})\");\n}\n",[1254],{"type":51,"tag":81,"props":1255,"children":1256},{"__ignoreMap":78},[1257,1265,1272,1280,1288,1296,1304,1312,1320,1327,1334,1342,1349,1357,1365,1372,1380],{"type":51,"tag":85,"props":1258,"children":1259},{"class":87,"line":88},[1260],{"type":51,"tag":85,"props":1261,"children":1262},{},[1263],{"type":57,"value":1264},"var options = new SearchOptions\n",{"type":51,"tag":85,"props":1266,"children":1267},{"class":87,"line":114},[1268],{"type":51,"tag":85,"props":1269,"children":1270},{},[1271],{"type":57,"value":661},{"type":51,"tag":85,"props":1273,"children":1274},{"class":87,"line":232},[1275],{"type":51,"tag":85,"props":1276,"children":1277},{},[1278],{"type":57,"value":1279},"    Filter = \"rating ge 4\",\n",{"type":51,"tag":85,"props":1281,"children":1282},{"class":87,"line":255},[1283],{"type":51,"tag":85,"props":1284,"children":1285},{},[1286],{"type":57,"value":1287},"    OrderBy = { \"rating desc\" },\n",{"type":51,"tag":85,"props":1289,"children":1290},{"class":87,"line":340},[1291],{"type":51,"tag":85,"props":1292,"children":1293},{},[1294],{"type":57,"value":1295},"    Select = { \"hotelId\", \"hotelName\", \"rating\" },\n",{"type":51,"tag":85,"props":1297,"children":1298},{"class":87,"line":349},[1299],{"type":51,"tag":85,"props":1300,"children":1301},{},[1302],{"type":57,"value":1303},"    Size = 10,\n",{"type":51,"tag":85,"props":1305,"children":1306},{"class":87,"line":358},[1307],{"type":51,"tag":85,"props":1308,"children":1309},{},[1310],{"type":57,"value":1311},"    Skip = 0,\n",{"type":51,"tag":85,"props":1313,"children":1314},{"class":87,"line":367},[1315],{"type":51,"tag":85,"props":1316,"children":1317},{},[1318],{"type":57,"value":1319},"    IncludeTotalCount = true\n",{"type":51,"tag":85,"props":1321,"children":1322},{"class":87,"line":376},[1323],{"type":51,"tag":85,"props":1324,"children":1325},{},[1326],{"type":57,"value":916},{"type":51,"tag":85,"props":1328,"children":1329},{"class":87,"line":385},[1330],{"type":51,"tag":85,"props":1331,"children":1332},{"emptyLinePlaceholder":326},[1333],{"type":57,"value":329},{"type":51,"tag":85,"props":1335,"children":1336},{"class":87,"line":394},[1337],{"type":51,"tag":85,"props":1338,"children":1339},{},[1340],{"type":57,"value":1341},"SearchResults\u003CHotel> results = await searchClient.SearchAsync\u003CHotel>(\"luxury\", options);\n",{"type":51,"tag":85,"props":1343,"children":1344},{"class":87,"line":403},[1345],{"type":51,"tag":85,"props":1346,"children":1347},{"emptyLinePlaceholder":326},[1348],{"type":57,"value":329},{"type":51,"tag":85,"props":1350,"children":1351},{"class":87,"line":412},[1352],{"type":51,"tag":85,"props":1353,"children":1354},{},[1355],{"type":57,"value":1356},"Console.WriteLine($\"Total: {results.TotalCount}\");\n",{"type":51,"tag":85,"props":1358,"children":1359},{"class":87,"line":421},[1360],{"type":51,"tag":85,"props":1361,"children":1362},{},[1363],{"type":57,"value":1364},"await foreach (SearchResult\u003CHotel> result in results.GetResultsAsync())\n",{"type":51,"tag":85,"props":1366,"children":1367},{"class":87,"line":726},[1368],{"type":51,"tag":85,"props":1369,"children":1370},{},[1371],{"type":57,"value":661},{"type":51,"tag":85,"props":1373,"children":1374},{"class":87,"line":734},[1375],{"type":51,"tag":85,"props":1376,"children":1377},{},[1378],{"type":57,"value":1379},"    Console.WriteLine($\"{result.Document.HotelName} (Score: {result.Score})\");\n",{"type":51,"tag":85,"props":1381,"children":1382},{"class":87,"line":743},[1383],{"type":51,"tag":85,"props":1384,"children":1385},{},[1386],{"type":57,"value":784},{"type":51,"tag":602,"props":1388,"children":1390},{"id":1389},"faceted-search",[1391],{"type":57,"value":1392},"Faceted Search",{"type":51,"tag":73,"props":1394,"children":1396},{"className":298,"code":1395,"language":300,"meta":78,"style":78},"var options = new SearchOptions\n{\n    Facets = { \"rating,count:5\", \"category\" }\n};\n\nvar results = await searchClient.SearchAsync\u003CHotel>(\"*\", options);\n\nforeach (var facet in results.Value.Facets[\"rating\"])\n{\n    Console.WriteLine($\"Rating {facet.Value}: {facet.Count}\");\n}\n",[1397],{"type":51,"tag":81,"props":1398,"children":1399},{"__ignoreMap":78},[1400,1407,1414,1422,1429,1436,1444,1451,1459,1466,1474],{"type":51,"tag":85,"props":1401,"children":1402},{"class":87,"line":88},[1403],{"type":51,"tag":85,"props":1404,"children":1405},{},[1406],{"type":57,"value":1264},{"type":51,"tag":85,"props":1408,"children":1409},{"class":87,"line":114},[1410],{"type":51,"tag":85,"props":1411,"children":1412},{},[1413],{"type":57,"value":661},{"type":51,"tag":85,"props":1415,"children":1416},{"class":87,"line":232},[1417],{"type":51,"tag":85,"props":1418,"children":1419},{},[1420],{"type":57,"value":1421},"    Facets = { \"rating,count:5\", \"category\" }\n",{"type":51,"tag":85,"props":1423,"children":1424},{"class":87,"line":255},[1425],{"type":51,"tag":85,"props":1426,"children":1427},{},[1428],{"type":57,"value":916},{"type":51,"tag":85,"props":1430,"children":1431},{"class":87,"line":340},[1432],{"type":51,"tag":85,"props":1433,"children":1434},{"emptyLinePlaceholder":326},[1435],{"type":57,"value":329},{"type":51,"tag":85,"props":1437,"children":1438},{"class":87,"line":349},[1439],{"type":51,"tag":85,"props":1440,"children":1441},{},[1442],{"type":57,"value":1443},"var results = await searchClient.SearchAsync\u003CHotel>(\"*\", options);\n",{"type":51,"tag":85,"props":1445,"children":1446},{"class":87,"line":358},[1447],{"type":51,"tag":85,"props":1448,"children":1449},{"emptyLinePlaceholder":326},[1450],{"type":57,"value":329},{"type":51,"tag":85,"props":1452,"children":1453},{"class":87,"line":367},[1454],{"type":51,"tag":85,"props":1455,"children":1456},{},[1457],{"type":57,"value":1458},"foreach (var facet in results.Value.Facets[\"rating\"])\n",{"type":51,"tag":85,"props":1460,"children":1461},{"class":87,"line":376},[1462],{"type":51,"tag":85,"props":1463,"children":1464},{},[1465],{"type":57,"value":661},{"type":51,"tag":85,"props":1467,"children":1468},{"class":87,"line":385},[1469],{"type":51,"tag":85,"props":1470,"children":1471},{},[1472],{"type":57,"value":1473},"    Console.WriteLine($\"Rating {facet.Value}: {facet.Count}\");\n",{"type":51,"tag":85,"props":1475,"children":1476},{"class":87,"line":394},[1477],{"type":51,"tag":85,"props":1478,"children":1479},{},[1480],{"type":57,"value":784},{"type":51,"tag":602,"props":1482,"children":1484},{"id":1483},"autocomplete-and-suggestions",[1485],{"type":57,"value":1486},"Autocomplete and Suggestions",{"type":51,"tag":73,"props":1488,"children":1490},{"className":298,"code":1489,"language":300,"meta":78,"style":78},"\u002F\u002F Autocomplete\nvar autocompleteOptions = new AutocompleteOptions { Mode = AutocompleteMode.OneTermWithContext };\nvar autocomplete = await searchClient.AutocompleteAsync(\"lux\", \"suggester-name\", autocompleteOptions);\n\n\u002F\u002F Suggestions\nvar suggestOptions = new SuggestOptions { UseFuzzyMatching = true };\nvar suggestions = await searchClient.SuggestAsync\u003CHotel>(\"lux\", \"suggester-name\", suggestOptions);\n",[1491],{"type":51,"tag":81,"props":1492,"children":1493},{"__ignoreMap":78},[1494,1502,1510,1518,1525,1533,1541],{"type":51,"tag":85,"props":1495,"children":1496},{"class":87,"line":88},[1497],{"type":51,"tag":85,"props":1498,"children":1499},{},[1500],{"type":57,"value":1501},"\u002F\u002F Autocomplete\n",{"type":51,"tag":85,"props":1503,"children":1504},{"class":87,"line":114},[1505],{"type":51,"tag":85,"props":1506,"children":1507},{},[1508],{"type":57,"value":1509},"var autocompleteOptions = new AutocompleteOptions { Mode = AutocompleteMode.OneTermWithContext };\n",{"type":51,"tag":85,"props":1511,"children":1512},{"class":87,"line":232},[1513],{"type":51,"tag":85,"props":1514,"children":1515},{},[1516],{"type":57,"value":1517},"var autocomplete = await searchClient.AutocompleteAsync(\"lux\", \"suggester-name\", autocompleteOptions);\n",{"type":51,"tag":85,"props":1519,"children":1520},{"class":87,"line":255},[1521],{"type":51,"tag":85,"props":1522,"children":1523},{"emptyLinePlaceholder":326},[1524],{"type":57,"value":329},{"type":51,"tag":85,"props":1526,"children":1527},{"class":87,"line":340},[1528],{"type":51,"tag":85,"props":1529,"children":1530},{},[1531],{"type":57,"value":1532},"\u002F\u002F Suggestions\n",{"type":51,"tag":85,"props":1534,"children":1535},{"class":87,"line":349},[1536],{"type":51,"tag":85,"props":1537,"children":1538},{},[1539],{"type":57,"value":1540},"var suggestOptions = new SuggestOptions { UseFuzzyMatching = true };\n",{"type":51,"tag":85,"props":1542,"children":1543},{"class":87,"line":358},[1544],{"type":51,"tag":85,"props":1545,"children":1546},{},[1547],{"type":57,"value":1548},"var suggestions = await searchClient.SuggestAsync\u003CHotel>(\"lux\", \"suggester-name\", suggestOptions);\n",{"type":51,"tag":66,"props":1550,"children":1552},{"id":1551},"vector-search",[1553],{"type":57,"value":1554},"Vector Search",{"type":51,"tag":60,"props":1556,"children":1557},{},[1558,1560,1566],{"type":57,"value":1559},"See ",{"type":51,"tag":1561,"props":1562,"children":1564},"a",{"href":1563},"references\u002Fvector-search.md",[1565],{"type":57,"value":1563},{"type":57,"value":1567}," for detailed patterns.",{"type":51,"tag":73,"props":1569,"children":1571},{"className":298,"code":1570,"language":300,"meta":78,"style":78},"using Azure.Search.Documents.Models;\n\n\u002F\u002F Pure vector search\nvar vectorQuery = new VectorizedQuery(embedding)\n{\n    KNearestNeighborsCount = 5,\n    Fields = { \"descriptionVector\" }\n};\n\nvar options = new SearchOptions\n{\n    VectorSearch = new VectorSearchOptions\n    {\n        Queries = { vectorQuery }\n    }\n};\n\nvar results = await searchClient.SearchAsync\u003CHotel>(null, options);\n",[1572],{"type":51,"tag":81,"props":1573,"children":1574},{"__ignoreMap":78},[1575,1583,1590,1598,1606,1613,1621,1629,1636,1643,1650,1657,1665,1672,1680,1687,1694,1701],{"type":51,"tag":85,"props":1576,"children":1577},{"class":87,"line":88},[1578],{"type":51,"tag":85,"props":1579,"children":1580},{},[1581],{"type":57,"value":1582},"using Azure.Search.Documents.Models;\n",{"type":51,"tag":85,"props":1584,"children":1585},{"class":87,"line":114},[1586],{"type":51,"tag":85,"props":1587,"children":1588},{"emptyLinePlaceholder":326},[1589],{"type":57,"value":329},{"type":51,"tag":85,"props":1591,"children":1592},{"class":87,"line":232},[1593],{"type":51,"tag":85,"props":1594,"children":1595},{},[1596],{"type":57,"value":1597},"\u002F\u002F Pure vector search\n",{"type":51,"tag":85,"props":1599,"children":1600},{"class":87,"line":255},[1601],{"type":51,"tag":85,"props":1602,"children":1603},{},[1604],{"type":57,"value":1605},"var vectorQuery = new VectorizedQuery(embedding)\n",{"type":51,"tag":85,"props":1607,"children":1608},{"class":87,"line":340},[1609],{"type":51,"tag":85,"props":1610,"children":1611},{},[1612],{"type":57,"value":661},{"type":51,"tag":85,"props":1614,"children":1615},{"class":87,"line":349},[1616],{"type":51,"tag":85,"props":1617,"children":1618},{},[1619],{"type":57,"value":1620},"    KNearestNeighborsCount = 5,\n",{"type":51,"tag":85,"props":1622,"children":1623},{"class":87,"line":358},[1624],{"type":51,"tag":85,"props":1625,"children":1626},{},[1627],{"type":57,"value":1628},"    Fields = { \"descriptionVector\" }\n",{"type":51,"tag":85,"props":1630,"children":1631},{"class":87,"line":367},[1632],{"type":51,"tag":85,"props":1633,"children":1634},{},[1635],{"type":57,"value":916},{"type":51,"tag":85,"props":1637,"children":1638},{"class":87,"line":376},[1639],{"type":51,"tag":85,"props":1640,"children":1641},{"emptyLinePlaceholder":326},[1642],{"type":57,"value":329},{"type":51,"tag":85,"props":1644,"children":1645},{"class":87,"line":385},[1646],{"type":51,"tag":85,"props":1647,"children":1648},{},[1649],{"type":57,"value":1264},{"type":51,"tag":85,"props":1651,"children":1652},{"class":87,"line":394},[1653],{"type":51,"tag":85,"props":1654,"children":1655},{},[1656],{"type":57,"value":661},{"type":51,"tag":85,"props":1658,"children":1659},{"class":87,"line":403},[1660],{"type":51,"tag":85,"props":1661,"children":1662},{},[1663],{"type":57,"value":1664},"    VectorSearch = new VectorSearchOptions\n",{"type":51,"tag":85,"props":1666,"children":1667},{"class":87,"line":412},[1668],{"type":51,"tag":85,"props":1669,"children":1670},{},[1671],{"type":57,"value":880},{"type":51,"tag":85,"props":1673,"children":1674},{"class":87,"line":421},[1675],{"type":51,"tag":85,"props":1676,"children":1677},{},[1678],{"type":57,"value":1679},"        Queries = { vectorQuery }\n",{"type":51,"tag":85,"props":1681,"children":1682},{"class":87,"line":726},[1683],{"type":51,"tag":85,"props":1684,"children":1685},{},[1686],{"type":57,"value":907},{"type":51,"tag":85,"props":1688,"children":1689},{"class":87,"line":734},[1690],{"type":51,"tag":85,"props":1691,"children":1692},{},[1693],{"type":57,"value":916},{"type":51,"tag":85,"props":1695,"children":1696},{"class":87,"line":743},[1697],{"type":51,"tag":85,"props":1698,"children":1699},{"emptyLinePlaceholder":326},[1700],{"type":57,"value":329},{"type":51,"tag":85,"props":1702,"children":1703},{"class":87,"line":752},[1704],{"type":51,"tag":85,"props":1705,"children":1706},{},[1707],{"type":57,"value":1708},"var results = await searchClient.SearchAsync\u003CHotel>(null, options);\n",{"type":51,"tag":66,"props":1710,"children":1712},{"id":1711},"semantic-search",[1713],{"type":57,"value":1714},"Semantic Search",{"type":51,"tag":60,"props":1716,"children":1717},{},[1718,1719,1724],{"type":57,"value":1559},{"type":51,"tag":1561,"props":1720,"children":1722},{"href":1721},"references\u002Fsemantic-search.md",[1723],{"type":57,"value":1721},{"type":57,"value":1567},{"type":51,"tag":73,"props":1726,"children":1728},{"className":298,"code":1727,"language":300,"meta":78,"style":78},"var options = new SearchOptions\n{\n    QueryType = SearchQueryType.Semantic,\n    SemanticSearch = new SemanticSearchOptions\n    {\n        SemanticConfigurationName = \"my-semantic-config\",\n        QueryCaption = new QueryCaption(QueryCaptionType.Extractive),\n        QueryAnswer = new QueryAnswer(QueryAnswerType.Extractive)\n    }\n};\n\nvar results = await searchClient.SearchAsync\u003CHotel>(\"best hotel for families\", options);\n\n\u002F\u002F Access semantic answers\nforeach (var answer in results.Value.SemanticSearch.Answers)\n{\n    Console.WriteLine($\"Answer: {answer.Text} (Score: {answer.Score})\");\n}\n\n\u002F\u002F Access captions\nawait foreach (var result in results.Value.GetResultsAsync())\n{\n    var caption = result.SemanticSearch?.Captions?.FirstOrDefault();\n    Console.WriteLine($\"Caption: {caption?.Text}\");\n}\n",[1729],{"type":51,"tag":81,"props":1730,"children":1731},{"__ignoreMap":78},[1732,1739,1746,1754,1762,1769,1777,1785,1793,1800,1807,1814,1822,1829,1837,1845,1852,1860,1867,1874,1882,1890,1897,1905,1913],{"type":51,"tag":85,"props":1733,"children":1734},{"class":87,"line":88},[1735],{"type":51,"tag":85,"props":1736,"children":1737},{},[1738],{"type":57,"value":1264},{"type":51,"tag":85,"props":1740,"children":1741},{"class":87,"line":114},[1742],{"type":51,"tag":85,"props":1743,"children":1744},{},[1745],{"type":57,"value":661},{"type":51,"tag":85,"props":1747,"children":1748},{"class":87,"line":232},[1749],{"type":51,"tag":85,"props":1750,"children":1751},{},[1752],{"type":57,"value":1753},"    QueryType = SearchQueryType.Semantic,\n",{"type":51,"tag":85,"props":1755,"children":1756},{"class":87,"line":255},[1757],{"type":51,"tag":85,"props":1758,"children":1759},{},[1760],{"type":57,"value":1761},"    SemanticSearch = new SemanticSearchOptions\n",{"type":51,"tag":85,"props":1763,"children":1764},{"class":87,"line":340},[1765],{"type":51,"tag":85,"props":1766,"children":1767},{},[1768],{"type":57,"value":880},{"type":51,"tag":85,"props":1770,"children":1771},{"class":87,"line":349},[1772],{"type":51,"tag":85,"props":1773,"children":1774},{},[1775],{"type":57,"value":1776},"        SemanticConfigurationName = \"my-semantic-config\",\n",{"type":51,"tag":85,"props":1778,"children":1779},{"class":87,"line":358},[1780],{"type":51,"tag":85,"props":1781,"children":1782},{},[1783],{"type":57,"value":1784},"        QueryCaption = new QueryCaption(QueryCaptionType.Extractive),\n",{"type":51,"tag":85,"props":1786,"children":1787},{"class":87,"line":367},[1788],{"type":51,"tag":85,"props":1789,"children":1790},{},[1791],{"type":57,"value":1792},"        QueryAnswer = new QueryAnswer(QueryAnswerType.Extractive)\n",{"type":51,"tag":85,"props":1794,"children":1795},{"class":87,"line":376},[1796],{"type":51,"tag":85,"props":1797,"children":1798},{},[1799],{"type":57,"value":907},{"type":51,"tag":85,"props":1801,"children":1802},{"class":87,"line":385},[1803],{"type":51,"tag":85,"props":1804,"children":1805},{},[1806],{"type":57,"value":916},{"type":51,"tag":85,"props":1808,"children":1809},{"class":87,"line":394},[1810],{"type":51,"tag":85,"props":1811,"children":1812},{"emptyLinePlaceholder":326},[1813],{"type":57,"value":329},{"type":51,"tag":85,"props":1815,"children":1816},{"class":87,"line":403},[1817],{"type":51,"tag":85,"props":1818,"children":1819},{},[1820],{"type":57,"value":1821},"var results = await searchClient.SearchAsync\u003CHotel>(\"best hotel for families\", options);\n",{"type":51,"tag":85,"props":1823,"children":1824},{"class":87,"line":412},[1825],{"type":51,"tag":85,"props":1826,"children":1827},{"emptyLinePlaceholder":326},[1828],{"type":57,"value":329},{"type":51,"tag":85,"props":1830,"children":1831},{"class":87,"line":421},[1832],{"type":51,"tag":85,"props":1833,"children":1834},{},[1835],{"type":57,"value":1836},"\u002F\u002F Access semantic answers\n",{"type":51,"tag":85,"props":1838,"children":1839},{"class":87,"line":726},[1840],{"type":51,"tag":85,"props":1841,"children":1842},{},[1843],{"type":57,"value":1844},"foreach (var answer in results.Value.SemanticSearch.Answers)\n",{"type":51,"tag":85,"props":1846,"children":1847},{"class":87,"line":734},[1848],{"type":51,"tag":85,"props":1849,"children":1850},{},[1851],{"type":57,"value":661},{"type":51,"tag":85,"props":1853,"children":1854},{"class":87,"line":743},[1855],{"type":51,"tag":85,"props":1856,"children":1857},{},[1858],{"type":57,"value":1859},"    Console.WriteLine($\"Answer: {answer.Text} (Score: {answer.Score})\");\n",{"type":51,"tag":85,"props":1861,"children":1862},{"class":87,"line":752},[1863],{"type":51,"tag":85,"props":1864,"children":1865},{},[1866],{"type":57,"value":784},{"type":51,"tag":85,"props":1868,"children":1869},{"class":87,"line":760},[1870],{"type":51,"tag":85,"props":1871,"children":1872},{"emptyLinePlaceholder":326},[1873],{"type":57,"value":329},{"type":51,"tag":85,"props":1875,"children":1876},{"class":87,"line":769},[1877],{"type":51,"tag":85,"props":1878,"children":1879},{},[1880],{"type":57,"value":1881},"\u002F\u002F Access captions\n",{"type":51,"tag":85,"props":1883,"children":1884},{"class":87,"line":778},[1885],{"type":51,"tag":85,"props":1886,"children":1887},{},[1888],{"type":57,"value":1889},"await foreach (var result in results.Value.GetResultsAsync())\n",{"type":51,"tag":85,"props":1891,"children":1892},{"class":87,"line":787},[1893],{"type":51,"tag":85,"props":1894,"children":1895},{},[1896],{"type":57,"value":661},{"type":51,"tag":85,"props":1898,"children":1899},{"class":87,"line":795},[1900],{"type":51,"tag":85,"props":1901,"children":1902},{},[1903],{"type":57,"value":1904},"    var caption = result.SemanticSearch?.Captions?.FirstOrDefault();\n",{"type":51,"tag":85,"props":1906,"children":1907},{"class":87,"line":804},[1908],{"type":51,"tag":85,"props":1909,"children":1910},{},[1911],{"type":57,"value":1912},"    Console.WriteLine($\"Caption: {caption?.Text}\");\n",{"type":51,"tag":85,"props":1914,"children":1915},{"class":87,"line":813},[1916],{"type":51,"tag":85,"props":1917,"children":1918},{},[1919],{"type":57,"value":784},{"type":51,"tag":66,"props":1921,"children":1923},{"id":1922},"hybrid-search-vector-keyword-semantic",[1924],{"type":57,"value":1925},"Hybrid Search (Vector + Keyword + Semantic)",{"type":51,"tag":73,"props":1927,"children":1929},{"className":298,"code":1928,"language":300,"meta":78,"style":78},"var vectorQuery = new VectorizedQuery(embedding)\n{\n    KNearestNeighborsCount = 5,\n    Fields = { \"descriptionVector\" }\n};\n\nvar options = new SearchOptions\n{\n    QueryType = SearchQueryType.Semantic,\n    SemanticSearch = new SemanticSearchOptions\n    {\n        SemanticConfigurationName = \"my-semantic-config\"\n    },\n    VectorSearch = new VectorSearchOptions\n    {\n        Queries = { vectorQuery }\n    }\n};\n\n\u002F\u002F Combines keyword search, vector search, and semantic ranking\nvar results = await searchClient.SearchAsync\u003CHotel>(\"luxury beachfront\", options);\n",[1930],{"type":51,"tag":81,"props":1931,"children":1932},{"__ignoreMap":78},[1933,1940,1947,1954,1961,1968,1975,1982,1989,1996,2003,2010,2018,2026,2033,2040,2047,2054,2061,2068,2076],{"type":51,"tag":85,"props":1934,"children":1935},{"class":87,"line":88},[1936],{"type":51,"tag":85,"props":1937,"children":1938},{},[1939],{"type":57,"value":1605},{"type":51,"tag":85,"props":1941,"children":1942},{"class":87,"line":114},[1943],{"type":51,"tag":85,"props":1944,"children":1945},{},[1946],{"type":57,"value":661},{"type":51,"tag":85,"props":1948,"children":1949},{"class":87,"line":232},[1950],{"type":51,"tag":85,"props":1951,"children":1952},{},[1953],{"type":57,"value":1620},{"type":51,"tag":85,"props":1955,"children":1956},{"class":87,"line":255},[1957],{"type":51,"tag":85,"props":1958,"children":1959},{},[1960],{"type":57,"value":1628},{"type":51,"tag":85,"props":1962,"children":1963},{"class":87,"line":340},[1964],{"type":51,"tag":85,"props":1965,"children":1966},{},[1967],{"type":57,"value":916},{"type":51,"tag":85,"props":1969,"children":1970},{"class":87,"line":349},[1971],{"type":51,"tag":85,"props":1972,"children":1973},{"emptyLinePlaceholder":326},[1974],{"type":57,"value":329},{"type":51,"tag":85,"props":1976,"children":1977},{"class":87,"line":358},[1978],{"type":51,"tag":85,"props":1979,"children":1980},{},[1981],{"type":57,"value":1264},{"type":51,"tag":85,"props":1983,"children":1984},{"class":87,"line":367},[1985],{"type":51,"tag":85,"props":1986,"children":1987},{},[1988],{"type":57,"value":661},{"type":51,"tag":85,"props":1990,"children":1991},{"class":87,"line":376},[1992],{"type":51,"tag":85,"props":1993,"children":1994},{},[1995],{"type":57,"value":1753},{"type":51,"tag":85,"props":1997,"children":1998},{"class":87,"line":385},[1999],{"type":51,"tag":85,"props":2000,"children":2001},{},[2002],{"type":57,"value":1761},{"type":51,"tag":85,"props":2004,"children":2005},{"class":87,"line":394},[2006],{"type":51,"tag":85,"props":2007,"children":2008},{},[2009],{"type":57,"value":880},{"type":51,"tag":85,"props":2011,"children":2012},{"class":87,"line":403},[2013],{"type":51,"tag":85,"props":2014,"children":2015},{},[2016],{"type":57,"value":2017},"        SemanticConfigurationName = \"my-semantic-config\"\n",{"type":51,"tag":85,"props":2019,"children":2020},{"class":87,"line":412},[2021],{"type":51,"tag":85,"props":2022,"children":2023},{},[2024],{"type":57,"value":2025},"    },\n",{"type":51,"tag":85,"props":2027,"children":2028},{"class":87,"line":421},[2029],{"type":51,"tag":85,"props":2030,"children":2031},{},[2032],{"type":57,"value":1664},{"type":51,"tag":85,"props":2034,"children":2035},{"class":87,"line":726},[2036],{"type":51,"tag":85,"props":2037,"children":2038},{},[2039],{"type":57,"value":880},{"type":51,"tag":85,"props":2041,"children":2042},{"class":87,"line":734},[2043],{"type":51,"tag":85,"props":2044,"children":2045},{},[2046],{"type":57,"value":1679},{"type":51,"tag":85,"props":2048,"children":2049},{"class":87,"line":743},[2050],{"type":51,"tag":85,"props":2051,"children":2052},{},[2053],{"type":57,"value":907},{"type":51,"tag":85,"props":2055,"children":2056},{"class":87,"line":752},[2057],{"type":51,"tag":85,"props":2058,"children":2059},{},[2060],{"type":57,"value":916},{"type":51,"tag":85,"props":2062,"children":2063},{"class":87,"line":760},[2064],{"type":51,"tag":85,"props":2065,"children":2066},{"emptyLinePlaceholder":326},[2067],{"type":57,"value":329},{"type":51,"tag":85,"props":2069,"children":2070},{"class":87,"line":769},[2071],{"type":51,"tag":85,"props":2072,"children":2073},{},[2074],{"type":57,"value":2075},"\u002F\u002F Combines keyword search, vector search, and semantic ranking\n",{"type":51,"tag":85,"props":2077,"children":2078},{"class":87,"line":778},[2079],{"type":51,"tag":85,"props":2080,"children":2081},{},[2082],{"type":57,"value":2083},"var results = await searchClient.SearchAsync\u003CHotel>(\"luxury beachfront\", options);\n",{"type":51,"tag":66,"props":2085,"children":2087},{"id":2086},"field-attributes-reference",[2088],{"type":57,"value":2089},"Field Attributes Reference",{"type":51,"tag":517,"props":2091,"children":2092},{},[2093,2108],{"type":51,"tag":521,"props":2094,"children":2095},{},[2096],{"type":51,"tag":525,"props":2097,"children":2098},{},[2099,2104],{"type":51,"tag":529,"props":2100,"children":2101},{},[2102],{"type":57,"value":2103},"Attribute",{"type":51,"tag":529,"props":2105,"children":2106},{},[2107],{"type":57,"value":538},{"type":51,"tag":540,"props":2109,"children":2110},{},[2111,2128,2145,2162,2179,2196,2213,2230,2247],{"type":51,"tag":525,"props":2112,"children":2113},{},[2114,2123],{"type":51,"tag":547,"props":2115,"children":2116},{},[2117],{"type":51,"tag":81,"props":2118,"children":2120},{"className":2119},[],[2121],{"type":57,"value":2122},"SimpleField",{"type":51,"tag":547,"props":2124,"children":2125},{},[2126],{"type":57,"value":2127},"Non-searchable field (filters, sorting, facets)",{"type":51,"tag":525,"props":2129,"children":2130},{},[2131,2140],{"type":51,"tag":547,"props":2132,"children":2133},{},[2134],{"type":51,"tag":81,"props":2135,"children":2137},{"className":2136},[],[2138],{"type":57,"value":2139},"SearchableField",{"type":51,"tag":547,"props":2141,"children":2142},{},[2143],{"type":57,"value":2144},"Full-text searchable field",{"type":51,"tag":525,"props":2146,"children":2147},{},[2148,2157],{"type":51,"tag":547,"props":2149,"children":2150},{},[2151],{"type":51,"tag":81,"props":2152,"children":2154},{"className":2153},[],[2155],{"type":57,"value":2156},"VectorSearchField",{"type":51,"tag":547,"props":2158,"children":2159},{},[2160],{"type":57,"value":2161},"Vector embedding field",{"type":51,"tag":525,"props":2163,"children":2164},{},[2165,2174],{"type":51,"tag":547,"props":2166,"children":2167},{},[2168],{"type":51,"tag":81,"props":2169,"children":2171},{"className":2170},[],[2172],{"type":57,"value":2173},"IsKey = true",{"type":51,"tag":547,"props":2175,"children":2176},{},[2177],{"type":57,"value":2178},"Document key (required, one per index)",{"type":51,"tag":525,"props":2180,"children":2181},{},[2182,2191],{"type":51,"tag":547,"props":2183,"children":2184},{},[2185],{"type":51,"tag":81,"props":2186,"children":2188},{"className":2187},[],[2189],{"type":57,"value":2190},"IsFilterable = true",{"type":51,"tag":547,"props":2192,"children":2193},{},[2194],{"type":57,"value":2195},"Enable $filter expressions",{"type":51,"tag":525,"props":2197,"children":2198},{},[2199,2208],{"type":51,"tag":547,"props":2200,"children":2201},{},[2202],{"type":51,"tag":81,"props":2203,"children":2205},{"className":2204},[],[2206],{"type":57,"value":2207},"IsSortable = true",{"type":51,"tag":547,"props":2209,"children":2210},{},[2211],{"type":57,"value":2212},"Enable $orderby",{"type":51,"tag":525,"props":2214,"children":2215},{},[2216,2225],{"type":51,"tag":547,"props":2217,"children":2218},{},[2219],{"type":51,"tag":81,"props":2220,"children":2222},{"className":2221},[],[2223],{"type":57,"value":2224},"IsFacetable = true",{"type":51,"tag":547,"props":2226,"children":2227},{},[2228],{"type":57,"value":2229},"Enable faceted navigation",{"type":51,"tag":525,"props":2231,"children":2232},{},[2233,2242],{"type":51,"tag":547,"props":2234,"children":2235},{},[2236],{"type":51,"tag":81,"props":2237,"children":2239},{"className":2238},[],[2240],{"type":57,"value":2241},"IsHidden = true",{"type":51,"tag":547,"props":2243,"children":2244},{},[2245],{"type":57,"value":2246},"Exclude from results",{"type":51,"tag":525,"props":2248,"children":2249},{},[2250,2259],{"type":51,"tag":547,"props":2251,"children":2252},{},[2253],{"type":51,"tag":81,"props":2254,"children":2256},{"className":2255},[],[2257],{"type":57,"value":2258},"AnalyzerName",{"type":51,"tag":547,"props":2260,"children":2261},{},[2262],{"type":57,"value":2263},"Specify text analyzer",{"type":51,"tag":66,"props":2265,"children":2267},{"id":2266},"error-handling",[2268],{"type":57,"value":2269},"Error Handling",{"type":51,"tag":73,"props":2271,"children":2273},{"className":298,"code":2272,"language":300,"meta":78,"style":78},"using Azure;\n\ntry\n{\n    var results = await searchClient.SearchAsync\u003CHotel>(\"query\");\n}\ncatch (RequestFailedException ex) when (ex.Status == 404)\n{\n    Console.WriteLine(\"Index not found\");\n}\ncatch (RequestFailedException ex)\n{\n    Console.WriteLine($\"Search error: {ex.Status} - {ex.ErrorCode}: {ex.Message}\");\n}\n",[2274],{"type":51,"tag":81,"props":2275,"children":2276},{"__ignoreMap":78},[2277,2284,2291,2299,2306,2314,2321,2329,2336,2344,2351,2359,2366,2374],{"type":51,"tag":85,"props":2278,"children":2279},{"class":87,"line":88},[2280],{"type":51,"tag":85,"props":2281,"children":2282},{},[2283],{"type":57,"value":451},{"type":51,"tag":85,"props":2285,"children":2286},{"class":87,"line":114},[2287],{"type":51,"tag":85,"props":2288,"children":2289},{"emptyLinePlaceholder":326},[2290],{"type":57,"value":329},{"type":51,"tag":85,"props":2292,"children":2293},{"class":87,"line":232},[2294],{"type":51,"tag":85,"props":2295,"children":2296},{},[2297],{"type":57,"value":2298},"try\n",{"type":51,"tag":85,"props":2300,"children":2301},{"class":87,"line":255},[2302],{"type":51,"tag":85,"props":2303,"children":2304},{},[2305],{"type":57,"value":661},{"type":51,"tag":85,"props":2307,"children":2308},{"class":87,"line":340},[2309],{"type":51,"tag":85,"props":2310,"children":2311},{},[2312],{"type":57,"value":2313},"    var results = await searchClient.SearchAsync\u003CHotel>(\"query\");\n",{"type":51,"tag":85,"props":2315,"children":2316},{"class":87,"line":349},[2317],{"type":51,"tag":85,"props":2318,"children":2319},{},[2320],{"type":57,"value":784},{"type":51,"tag":85,"props":2322,"children":2323},{"class":87,"line":358},[2324],{"type":51,"tag":85,"props":2325,"children":2326},{},[2327],{"type":57,"value":2328},"catch (RequestFailedException ex) when (ex.Status == 404)\n",{"type":51,"tag":85,"props":2330,"children":2331},{"class":87,"line":367},[2332],{"type":51,"tag":85,"props":2333,"children":2334},{},[2335],{"type":57,"value":661},{"type":51,"tag":85,"props":2337,"children":2338},{"class":87,"line":376},[2339],{"type":51,"tag":85,"props":2340,"children":2341},{},[2342],{"type":57,"value":2343},"    Console.WriteLine(\"Index not found\");\n",{"type":51,"tag":85,"props":2345,"children":2346},{"class":87,"line":385},[2347],{"type":51,"tag":85,"props":2348,"children":2349},{},[2350],{"type":57,"value":784},{"type":51,"tag":85,"props":2352,"children":2353},{"class":87,"line":394},[2354],{"type":51,"tag":85,"props":2355,"children":2356},{},[2357],{"type":57,"value":2358},"catch (RequestFailedException ex)\n",{"type":51,"tag":85,"props":2360,"children":2361},{"class":87,"line":403},[2362],{"type":51,"tag":85,"props":2363,"children":2364},{},[2365],{"type":57,"value":661},{"type":51,"tag":85,"props":2367,"children":2368},{"class":87,"line":412},[2369],{"type":51,"tag":85,"props":2370,"children":2371},{},[2372],{"type":57,"value":2373},"    Console.WriteLine($\"Search error: {ex.Status} - {ex.ErrorCode}: {ex.Message}\");\n",{"type":51,"tag":85,"props":2375,"children":2376},{"class":87,"line":421},[2377],{"type":51,"tag":85,"props":2378,"children":2379},{},[2380],{"type":57,"value":784},{"type":51,"tag":66,"props":2382,"children":2384},{"id":2383},"best-practices",[2385],{"type":57,"value":2386},"Best Practices",{"type":51,"tag":2388,"props":2389,"children":2390},"ol",{},[2391,2408,2423,2438,2448,2463,2473],{"type":51,"tag":2392,"props":2393,"children":2394},"li",{},[2395,2406],{"type":51,"tag":137,"props":2396,"children":2397},{},[2398,2400],{"type":57,"value":2399},"Use ",{"type":51,"tag":81,"props":2401,"children":2403},{"className":2402},[],[2404],{"type":57,"value":2405},"DefaultAzureCredential",{"type":57,"value":2407}," over API keys for production",{"type":51,"tag":2392,"props":2409,"children":2410},{},[2411,2421],{"type":51,"tag":137,"props":2412,"children":2413},{},[2414,2415],{"type":57,"value":2399},{"type":51,"tag":81,"props":2416,"children":2418},{"className":2417},[],[2419],{"type":57,"value":2420},"FieldBuilder",{"type":57,"value":2422}," with model attributes for type-safe index definitions",{"type":51,"tag":2392,"props":2424,"children":2425},{},[2426,2436],{"type":51,"tag":137,"props":2427,"children":2428},{},[2429,2430],{"type":57,"value":2399},{"type":51,"tag":81,"props":2431,"children":2433},{"className":2432},[],[2434],{"type":57,"value":2435},"CreateOrUpdateIndexAsync",{"type":57,"value":2437}," for idempotent index creation",{"type":51,"tag":2392,"props":2439,"children":2440},{},[2441,2446],{"type":51,"tag":137,"props":2442,"children":2443},{},[2444],{"type":57,"value":2445},"Batch document operations",{"type":57,"value":2447}," for better throughput",{"type":51,"tag":2392,"props":2449,"children":2450},{},[2451,2461],{"type":51,"tag":137,"props":2452,"children":2453},{},[2454,2455],{"type":57,"value":2399},{"type":51,"tag":81,"props":2456,"children":2458},{"className":2457},[],[2459],{"type":57,"value":2460},"Select",{"type":57,"value":2462}," to return only needed fields",{"type":51,"tag":2392,"props":2464,"children":2465},{},[2466,2471],{"type":51,"tag":137,"props":2467,"children":2468},{},[2469],{"type":57,"value":2470},"Configure semantic search",{"type":57,"value":2472}," for natural language queries",{"type":51,"tag":2392,"props":2474,"children":2475},{},[2476,2481],{"type":51,"tag":137,"props":2477,"children":2478},{},[2479],{"type":57,"value":2480},"Combine vector + keyword + semantic",{"type":57,"value":2482}," for best relevance",{"type":51,"tag":66,"props":2484,"children":2486},{"id":2485},"reference-files",[2487],{"type":57,"value":2488},"Reference Files",{"type":51,"tag":517,"props":2490,"children":2491},{},[2492,2508],{"type":51,"tag":521,"props":2493,"children":2494},{},[2495],{"type":51,"tag":525,"props":2496,"children":2497},{},[2498,2503],{"type":51,"tag":529,"props":2499,"children":2500},{},[2501],{"type":57,"value":2502},"File",{"type":51,"tag":529,"props":2504,"children":2505},{},[2506],{"type":57,"value":2507},"Contents",{"type":51,"tag":540,"props":2509,"children":2510},{},[2511,2526],{"type":51,"tag":525,"props":2512,"children":2513},{},[2514,2521],{"type":51,"tag":547,"props":2515,"children":2516},{},[2517],{"type":51,"tag":1561,"props":2518,"children":2519},{"href":1563},[2520],{"type":57,"value":1563},{"type":51,"tag":547,"props":2522,"children":2523},{},[2524],{"type":57,"value":2525},"Vector search, hybrid search, vectorizers",{"type":51,"tag":525,"props":2527,"children":2528},{},[2529,2536],{"type":51,"tag":547,"props":2530,"children":2531},{},[2532],{"type":51,"tag":1561,"props":2533,"children":2534},{"href":1721},[2535],{"type":57,"value":1721},{"type":51,"tag":547,"props":2537,"children":2538},{},[2539],{"type":57,"value":2540},"Semantic ranking, captions, answers",{"type":51,"tag":2542,"props":2543,"children":2544},"style",{},[2545],{"type":57,"value":2546},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":2548,"total":927},[2549,2563,2584,2599,2616,2627,2640],{"slug":2550,"name":2550,"fn":2551,"description":2552,"org":2553,"tags":2554,"stars":25,"repoUrl":26,"updatedAt":2562},"azure-ai-agents-persistent-dotnet","build AI agents with Azure .NET SDK","Azure AI Agents Persistent SDK for .NET. Low-level SDK for creating and managing AI agents with threads, messages, runs, and tools. Use for agent CRUD, conversation threads, streaming responses, function calling, file search, and code interpreter. Triggers: \"PersistentAgentsClient\", \"persistent agents\", \"agent threads\", \"agent runs\", \"streaming agents\", \"function calling agents .NET\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2555,2556,2558,2559],{"name":17,"slug":18,"type":15},{"name":2557,"slug":32,"type":15},"Agents",{"name":13,"slug":14,"type":15},{"name":2560,"slug":2561,"type":15},"LLM","llm","2026-07-03T16:32:10.297433",{"slug":2564,"name":2564,"fn":2565,"description":2566,"org":2567,"tags":2568,"stars":25,"repoUrl":26,"updatedAt":2583},"azure-ai-anomalydetector-java","build anomaly detection applications with Java","Build anomaly detection applications with Azure AI Anomaly Detector SDK for Java. Use when implementing univariate\u002Fmultivariate anomaly detection, time-series analysis, or AI-powered monitoring.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2569,2572,2573,2576,2579,2580],{"name":2570,"slug":2571,"type":15},"Analytics","analytics",{"name":13,"slug":14,"type":15},{"name":2574,"slug":2575,"type":15},"Data Analysis","data-analysis",{"name":2577,"slug":2578,"type":15},"Java","java",{"name":9,"slug":8,"type":15},{"name":2581,"slug":2582,"type":15},"Monitoring","monitoring","2026-05-13T06:14:16.261754",{"slug":2585,"name":2585,"fn":2586,"description":2587,"org":2588,"tags":2589,"stars":25,"repoUrl":26,"updatedAt":2598},"azure-ai-contentsafety-java","build content moderation applications with Azure AI","Build content moderation applications with Azure AI Content Safety SDK for Java. Use when implementing text\u002Fimage analysis, blocklist management, or harm detection for hate, violence, sexual content, and self-harm.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2590,2593,2594,2595],{"name":2591,"slug":2592,"type":15},"AI Infrastructure","ai-infrastructure",{"name":13,"slug":14,"type":15},{"name":2577,"slug":2578,"type":15},{"name":2596,"slug":2597,"type":15},"Security","security","2026-07-07T06:53:31.293235",{"slug":2600,"name":2600,"fn":2601,"description":2602,"org":2603,"tags":2604,"stars":25,"repoUrl":26,"updatedAt":2615},"azure-ai-contentsafety-py","detect harmful content with Azure AI Content Safety","Azure AI Content Safety SDK for Python. Use for detecting harmful content in text and images with multi-severity classification.\nTriggers: \"azure-ai-contentsafety\", \"ContentSafetyClient\", \"content moderation\", \"harmful content\", \"text analysis\", \"image analysis\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2605,2606,2609,2610,2611,2614],{"name":13,"slug":14,"type":15},{"name":2607,"slug":2608,"type":15},"Compliance","compliance",{"name":2560,"slug":2561,"type":15},{"name":9,"slug":8,"type":15},{"name":2612,"slug":2613,"type":15},"Python","python",{"name":2596,"slug":2597,"type":15},"2026-07-18T05:14:23.017504",{"slug":2617,"name":2617,"fn":2618,"description":2619,"org":2620,"tags":2621,"stars":25,"repoUrl":26,"updatedAt":2626},"azure-ai-language-conversations-py","implement conversational language understanding with Python","Implement Conversational Language Understanding (CLU) using the azure-ai-language-conversations Python SDK. Use when working with ConversationAnalysisClient to analyze conversation intent and entities, building NLP features, or integrating language understanding into applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2622,2623,2624,2625],{"name":2570,"slug":2571,"type":15},{"name":13,"slug":14,"type":15},{"name":2560,"slug":2561,"type":15},{"name":2612,"slug":2613,"type":15},"2026-07-31T05:54:29.068751",{"slug":2628,"name":2628,"fn":2629,"description":2630,"org":2631,"tags":2632,"stars":25,"repoUrl":26,"updatedAt":2639},"azure-ai-translation-text-py","translate text using Azure AI services","Azure AI Text Translation SDK for real-time text translation, transliteration, language detection, and dictionary lookup. Use for translating text content in applications.\nTriggers: \"text translation\", \"translator\", \"translate text\", \"transliterate\", \"TextTranslationClient\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2633,2636,2637,2638],{"name":2634,"slug":2635,"type":15},"API Development","api-development",{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":2612,"slug":2613,"type":15},"2026-07-18T05:14:16.988376",{"slug":2641,"name":2641,"fn":2642,"description":2643,"org":2644,"tags":2645,"stars":25,"repoUrl":26,"updatedAt":2654},"azure-ai-vision-imageanalysis-py","analyze images with Azure AI Vision","Azure AI Vision Image Analysis SDK for captions, tags, objects, OCR, people detection, and smart cropping. Use for computer vision and image understanding tasks.\nTriggers: \"image analysis\", \"computer vision\", \"OCR\", \"object detection\", \"ImageAnalysisClient\", \"image caption\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2646,2647,2650,2653],{"name":13,"slug":14,"type":15},{"name":2648,"slug":2649,"type":15},"Computer Vision","computer-vision",{"name":2651,"slug":2652,"type":15},"Images","images",{"name":2612,"slug":2613,"type":15},"2026-07-18T05:14:18.007737",{"items":2656,"total":2791},[2657,2679,2686,2695,2702,2711,2718,2725,2732,2747,2766,2779],{"slug":2658,"name":2658,"fn":2659,"description":2660,"org":2661,"tags":2662,"stars":2676,"repoUrl":2677,"updatedAt":2678},"rushstack-best-practices","manage Rush monorepos with best practices","Provides best practices and guidance for working with Rush monorepos. Use when the user is working in a Rush-based repository, asks about Rush commands (install, update, build, rebuild), needs help with project selection, dependency management, build caching, subspace configuration, or troubleshooting Rush-specific issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2663,2666,2669,2670,2673],{"name":2664,"slug":2665,"type":15},"Engineering","engineering",{"name":2667,"slug":2668,"type":15},"Local Development","local-development",{"name":9,"slug":8,"type":15},{"name":2671,"slug":2672,"type":15},"Project Management","project-management",{"name":2674,"slug":2675,"type":15},"Rush","rush",6484,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Frushstack","2026-04-06T18:34:44.965032",{"slug":2550,"name":2550,"fn":2551,"description":2552,"org":2680,"tags":2681,"stars":25,"repoUrl":26,"updatedAt":2562},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2682,2683,2684,2685],{"name":17,"slug":18,"type":15},{"name":2557,"slug":32,"type":15},{"name":13,"slug":14,"type":15},{"name":2560,"slug":2561,"type":15},{"slug":2564,"name":2564,"fn":2565,"description":2566,"org":2687,"tags":2688,"stars":25,"repoUrl":26,"updatedAt":2583},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2689,2690,2691,2692,2693,2694],{"name":2570,"slug":2571,"type":15},{"name":13,"slug":14,"type":15},{"name":2574,"slug":2575,"type":15},{"name":2577,"slug":2578,"type":15},{"name":9,"slug":8,"type":15},{"name":2581,"slug":2582,"type":15},{"slug":2585,"name":2585,"fn":2586,"description":2587,"org":2696,"tags":2697,"stars":25,"repoUrl":26,"updatedAt":2598},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2698,2699,2700,2701],{"name":2591,"slug":2592,"type":15},{"name":13,"slug":14,"type":15},{"name":2577,"slug":2578,"type":15},{"name":2596,"slug":2597,"type":15},{"slug":2600,"name":2600,"fn":2601,"description":2602,"org":2703,"tags":2704,"stars":25,"repoUrl":26,"updatedAt":2615},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2705,2706,2707,2708,2709,2710],{"name":13,"slug":14,"type":15},{"name":2607,"slug":2608,"type":15},{"name":2560,"slug":2561,"type":15},{"name":9,"slug":8,"type":15},{"name":2612,"slug":2613,"type":15},{"name":2596,"slug":2597,"type":15},{"slug":2617,"name":2617,"fn":2618,"description":2619,"org":2712,"tags":2713,"stars":25,"repoUrl":26,"updatedAt":2626},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2714,2715,2716,2717],{"name":2570,"slug":2571,"type":15},{"name":13,"slug":14,"type":15},{"name":2560,"slug":2561,"type":15},{"name":2612,"slug":2613,"type":15},{"slug":2628,"name":2628,"fn":2629,"description":2630,"org":2719,"tags":2720,"stars":25,"repoUrl":26,"updatedAt":2639},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2721,2722,2723,2724],{"name":2634,"slug":2635,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":2612,"slug":2613,"type":15},{"slug":2641,"name":2641,"fn":2642,"description":2643,"org":2726,"tags":2727,"stars":25,"repoUrl":26,"updatedAt":2654},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2728,2729,2730,2731],{"name":13,"slug":14,"type":15},{"name":2648,"slug":2649,"type":15},{"name":2651,"slug":2652,"type":15},{"name":2612,"slug":2613,"type":15},{"slug":2733,"name":2733,"fn":2734,"description":2735,"org":2736,"tags":2737,"stars":25,"repoUrl":26,"updatedAt":2746},"azure-appconfiguration-java","manage configuration with Azure App Configuration","Azure App Configuration SDK for Java. Centralized application configuration management with key-value settings, feature flags, and snapshots.\nTriggers: \"ConfigurationClient java\", \"app configuration java\", \"feature flag java\", \"configuration setting java\", \"azure config java\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2738,2739,2742,2745],{"name":13,"slug":14,"type":15},{"name":2740,"slug":2741,"type":15},"Configuration","configuration",{"name":2743,"slug":2744,"type":15},"Feature Flags","feature-flags",{"name":2577,"slug":2578,"type":15},"2026-07-03T16:32:01.278468",{"slug":2748,"name":2748,"fn":2749,"description":2750,"org":2751,"tags":2752,"stars":25,"repoUrl":26,"updatedAt":2765},"azure-cosmos-rust","build applications with Azure Cosmos DB","Azure Cosmos DB library for Rust (NoSQL API). Document CRUD, containers, and globally distributed data.\nTriggers: \"cosmos db rust\", \"CosmosClient rust\", \"document crud rust\", \"NoSQL rust\", \"partition key rust\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2753,2756,2759,2762],{"name":2754,"slug":2755,"type":15},"Cosmos DB","cosmos-db",{"name":2757,"slug":2758,"type":15},"Database","database",{"name":2760,"slug":2761,"type":15},"NoSQL","nosql",{"name":2763,"slug":2764,"type":15},"Rust","rust","2026-07-31T05:54:27.021432",{"slug":2767,"name":2767,"fn":2749,"description":2768,"org":2769,"tags":2770,"stars":25,"repoUrl":26,"updatedAt":2778},"azure-cosmos-ts","Azure Cosmos DB JavaScript\u002FTypeScript SDK (@azure\u002Fcosmos) for data plane operations. Use for CRUD operations on documents, queries, bulk operations, and container management. Triggers: \"Cosmos DB\", \"@azure\u002Fcosmos\", \"CosmosClient\", \"document CRUD\", \"NoSQL queries\", \"bulk operations\", \"partition key\", \"container.items\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2771,2772,2773,2774,2775],{"name":2754,"slug":2755,"type":15},{"name":2757,"slug":2758,"type":15},{"name":9,"slug":8,"type":15},{"name":2760,"slug":2761,"type":15},{"name":2776,"slug":2777,"type":15},"TypeScript","typescript","2026-07-03T16:31:19.368382",{"slug":2780,"name":2780,"fn":2781,"description":2782,"org":2783,"tags":2784,"stars":25,"repoUrl":26,"updatedAt":2790},"azure-data-tables-java","build table storage applications with Java","Build table storage applications with Azure Tables SDK for Java. Use when working with Azure Table Storage or Cosmos DB Table API for NoSQL key-value data, schemaless storage, or structured data at scale.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2785,2786,2787,2788,2789],{"name":13,"slug":14,"type":15},{"name":2754,"slug":2755,"type":15},{"name":2757,"slug":2758,"type":15},{"name":2577,"slug":2578,"type":15},{"name":2760,"slug":2761,"type":15},"2026-05-13T06:14:17.582229",267]