Skip to content

Commit 4be55fb

Browse files
authored
Merge pull request #6003 from HeidiSteen/heidist-july
[azure search] Consolidate skillset tutorials into zones
2 parents 88b67c3 + b1e7a50 commit 4be55fb

16 files changed

+110
-78
lines changed

articles/search/.openpublishing.redirection.search.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,16 @@
99
"source_path_from_root": "/articles/search/cognitive-search-quickstart-blob.md",
1010
"redirect_url": "/azure/search/search-get-started-skillset",
1111
"redirect_document_id": true
12+
},
13+
{
14+
"source_path_from_root": "/articles/search/cognitive-search-tutorial-blob.md",
15+
"redirect_url": "/azure/search/tutorial-skillset",
16+
"redirect_document_id": true
17+
},
18+
{
19+
"source_path_from_root": "/articles/search/cognitive-search-tutorial-blob-dotnet.md",
20+
"redirect_url": "/azure/search/tutorial-skillset",
21+
"redirect_document_id": false
1222
},
1323
{
1424
"source_path_from_root": "/articles/search/search-howto-connecting-azure-sql-database-to-azure-search-using-indexers.md",

articles/search/chat-completion-skill-example-usage.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ This section supplements the [skill reference](cognitive-search-defining-skillse
117117
Once the basic framework of your skillset is created and Azure AI services is configured, you can focus on each individual image skill, defining inputs and source context, and mapping outputs to fields in either an index or knowledge store.
118118

119119
> [!NOTE]
120-
> For an example skillset that combines image processing with downstream natural language processing, see [REST Tutorial: Use REST and AI to generate searchable content from Azure blobs](cognitive-search-tutorial-blob.md). It shows how to feed skill imaging output into entity recognition and key phrase extraction.
120+
> For an example skillset that combines image processing with downstream natural language processing, see [REST Tutorial: Use REST and AI to generate searchable content from Azure blobs](tutorial-skillset.md). It shows how to feed skill imaging output into entity recognition and key phrase extraction.
121121
122122
### Example inputs for image processing
123123

articles/search/cognitive-search-concept-image-scenarios.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ This section supplements the [skill reference](cognitive-search-predefined-skill
166166
Once the basic framework of your skillset is created and Azure AI services is configured, you can focus on each individual image skill, defining inputs and source context, and mapping outputs to fields in either an index or knowledge store.
167167

168168
> [!NOTE]
169-
> For an example skillset that combines image processing with downstream natural language processing, see [REST Tutorial: Use REST and AI to generate searchable content from Azure blobs](cognitive-search-tutorial-blob.md). It shows how to feed skill imaging output into entity recognition and key phrase extraction.
169+
> For an example skillset that combines image processing with downstream natural language processing, see [REST Tutorial: Use REST and AI to generate searchable content from Azure blobs](tutorial-skillset.md). It shows how to feed skill imaging output into entity recognition and key phrase extraction.
170170
171171
### Inputs for image processing
172172

articles/search/cognitive-search-concept-intro.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ To repeat any of the above steps, [reset the indexer](search-howto-reindex.md) b
135135
## Next steps
136136

137137
+ [Quickstart: Create a skillset for AI enrichment](search-get-started-skillset.md)
138-
+ [Tutorial: Learn about the AI enrichment REST APIs](cognitive-search-tutorial-blob.md)
138+
+ [Tutorial: Learn about the AI enrichment REST APIs](tutorial-skillset.md)
139139
+ [Skillset concepts](cognitive-search-working-with-skillsets.md)
140140
+ [Knowledge store concepts](knowledge-store-concept-intro.md)
141141
+ [Create a skillset](cognitive-search-defining-skillset.md)

articles/search/cognitive-search-concept-troubleshooting.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ For [parallel indexing](search-howto-large-index.md), distribute your data into
7171
## See also
7272

7373
+ [Quickstart: Create an AI enrichment pipeline in the Azure portal](search-get-started-skillset.md)
74-
+ [Tutorial: Learn AI enrichment REST APIs](cognitive-search-tutorial-blob.md)
74+
+ [Tutorial: Learn AI enrichment REST APIs](tutorial-skillset.md)
7575
+ [How to configure blob indexers](search-howto-indexing-azure-blob-storage.md)
7676
+ [How to define a skillset](cognitive-search-defining-skillset.md)
7777
+ [How to map enriched fields to an index](cognitive-search-output-field-mapping.md)

articles/search/cognitive-search-predefined-skills.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,4 +81,4 @@ For guidance on creating a custom skill, see [Define a custom interface](cogniti
8181

8282
+ [How to define a skillset](cognitive-search-defining-skillset.md)
8383
+ [Custom Skills interface definition](cognitive-search-custom-skill-interface.md)
84-
+ [Tutorial: Enriched indexing with AI](cognitive-search-tutorial-blob.md)
84+
+ [Tutorial: Enriched indexing with AI](tutorial-skillset.md)

articles/search/cognitive-search-tutorial-blob-dotnet.md renamed to articles/search/includes/tutorials/skillset-csharp.md

Lines changed: 32 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,13 @@
11
---
2-
title: 'Tutorial: Skillsets Using C#'
3-
titleSuffix: Azure AI Search
4-
description: Use C# and the Azure SDK for .NET to create skillsets. This skillset applies AI transformations and analyses to create searchable content from images and unstructured text.
5-
2+
manager: nitinme
63
author: HeidiSteen
74
ms.author: heidist
8-
manager: nitinme
9-
105
ms.service: azure-ai-search
11-
ms.topic: tutorial
6+
ms.topic: include
127
ms.date: 07/11/2025
13-
ms.custom:
14-
- devx-track-csharp
15-
- devx-track-dotnet
16-
- ignite-2023
178
---
189

19-
# C# Tutorial: Use skillsets to generate searchable content in Azure AI Search
20-
21-
Learn how to use the [Azure SDK for .NET](https://www.nuget.org/packages/Azure.Search.Documents/) to create an [AI enrichment pipeline](cognitive-search-concept-intro.md) for content extraction and transformations during indexing.
10+
Learn how to use the [Azure SDK for .NET](https://www.nuget.org/packages/Azure.Search.Documents/) to create an [AI enrichment pipeline](../../cognitive-search-concept-intro.md) for content extraction and transformations during indexing.
2211

2312
Skillsets add AI processing to raw content, making it more uniform and searchable. Once you know how skillsets work, you can support a broad range of transformations, from image analysis to natural language processing to customized processing that you provide externally.
2413

@@ -34,17 +23,17 @@ In this tutorial, you:
3423

3524
This tutorial uses C# and the [**Azure.Search.Documents**](/dotnet/api/overview/azure/search.documents-readme) client library to create a data source, index, indexer, and skillset.
3625

37-
The [indexer](search-indexer-overview.md) drives each step in the pipeline, starting with content extraction of sample data (unstructured text and images) in a blob container on Azure Storage.
26+
The [indexer](../../search-indexer-overview.md) drives each step in the pipeline, starting with content extraction of sample data (unstructured text and images) in a blob container on Azure Storage.
3827

39-
Once content is extracted, the [skillset](cognitive-search-working-with-skillsets.md) executes built-in skills from Microsoft to find and extract information. These skills include Optical Character Recognition (OCR) on images, language detection on text, key phrase extraction, and entity recognition (organizations). New information created by the skillset is sent to fields in an [index](search-what-is-an-index.md). Once the index is populated, you can use the fields in queries, facets, and filters.
28+
Once content is extracted, the [skillset](../../cognitive-search-working-with-skillsets.md) executes built-in skills from Microsoft to find and extract information. These skills include Optical Character Recognition (OCR) on images, language detection on text, key phrase extraction, and entity recognition (organizations). New information created by the skillset is sent to fields in an [index](../../search-what-is-an-index.md). Once the index is populated, you can use the fields in queries, facets, and filters.
4029

4130
## Prerequisites
4231

4332
+ An Azure account with an active subscription. [Create an account for free](https://azure.microsoft.com/free/?WT.mc_id=A261C142F).
4433

4534
+ [Azure Storage](/azure/storage/common/storage-account-create).
4635

47-
+ [Azure AI Search](search-create-app-portal.md).
36+
+ [Azure AI Search](../../search-create-service-portal.md).
4837

4938
+ [Azure.Search.Documents package](https://www.nuget.org/packages/Azure.Search.Documents).
5039

@@ -77,7 +66,7 @@ Once content is extracted, the [skillset](cognitive-search-working-with-skillset
7766
7867
### Azure AI services
7968
80-
Built-in AI enrichment is backed by Azure AI services, including Language service and Azure AI Vision for natural language and image processing. For small workloads like this tutorial, you can use the free allocation of 20 transactions per indexer. For larger workloads, [attach an Azure AI Services multi-region resource to a skillset](cognitive-search-attach-cognitive-services.md) for Standard pricing.
69+
Built-in AI enrichment is backed by Azure AI services, including Language service and Azure AI Vision for natural language and image processing. For small workloads like this tutorial, you can use the free allocation of 20 transactions per indexer. For larger workloads, [attach an Azure AI Services multi-region resource to a skillset](../../cognitive-search-attach-cognitive-services.md) for Standard pricing.
8170
8271
### Copy a search service URL and API key
8372
@@ -237,29 +226,29 @@ SearchIndexerDataSourceConnection dataSource = CreateOrUpdateDataSource(indexerC
237226

238227
Build and run the solution. Since this is your first request, check the Azure portal to confirm the data source was created in Azure AI Search. On the search service overview page, verify the Data Sources list has a new item. You might need to wait a few minutes for the Azure portal page to refresh.
239228

240-
![Data sources tile in the Azure portal](./media/cognitive-search-tutorial-blob/data-source-tile.png "Data sources tile in the Azure portal")
229+
![Data sources tile in the Azure portal](../../media/cognitive-search-tutorial-blob/data-source-tile.png "Data sources tile in the Azure portal")
241230

242231
### Step 2: Create a skillset
243232

244-
In this section, you define a set of enrichment steps that you want to apply to your data. Each enrichment step is called a *skill* and the set of enrichment steps, a *skillset*. This tutorial uses [built-in skills](cognitive-search-predefined-skills.md) for the skillset:
233+
In this section, you define a set of enrichment steps that you want to apply to your data. Each enrichment step is called a *skill* and the set of enrichment steps, a *skillset*. This tutorial uses [built-in skills](../../cognitive-search-predefined-skills.md) for the skillset:
245234

246-
* [Optical Character Recognition](cognitive-search-skill-ocr.md) to recognize printed and handwritten text in image files.
235+
* [Optical Character Recognition](../../cognitive-search-skill-ocr.md) to recognize printed and handwritten text in image files.
247236

248-
* [Text Merger](cognitive-search-skill-textmerger.md) to consolidate text from a collection of fields into a single "merged content" field.
237+
* [Text Merger](../../cognitive-search-skill-textmerger.md) to consolidate text from a collection of fields into a single "merged content" field.
249238

250-
* [Language Detection](cognitive-search-skill-language-detection.md) to identify the content's language.
239+
* [Language Detection](../../cognitive-search-skill-language-detection.md) to identify the content's language.
251240

252-
* [Entity Recognition](cognitive-search-skill-entity-recognition-v3.md) for extracting the names of organizations from content in the blob container.
241+
* [Entity Recognition](../../cognitive-search-skill-entity-recognition-v3.md) for extracting the names of organizations from content in the blob container.
253242

254-
* [Text Split](cognitive-search-skill-textsplit.md) to break large content into smaller chunks before calling the key phrase extraction skill and the entity recognition skill. Key phrase extraction and entity recognition accept inputs of 50,000 characters or less. A few of the sample files need splitting up to fit within this limit.
243+
* [Text Split](../../cognitive-search-skill-textsplit.md) to break large content into smaller chunks before calling the key phrase extraction skill and the entity recognition skill. Key phrase extraction and entity recognition accept inputs of 50,000 characters or less. A few of the sample files need splitting up to fit within this limit.
255244

256-
* [Key Phrase Extraction](cognitive-search-skill-keyphrases.md) to pull out the top key phrases.
245+
* [Key Phrase Extraction](../../cognitive-search-skill-keyphrases.md) to pull out the top key phrases.
257246

258247
During initial processing, Azure AI Search cracks each document to extract content from different file formats. Text originating in the source file is placed into a generated `content` field, one for each document. As such, set the input as `"/document/content"` to use this text. Image content is placed into a generated `normalized_images` field, specified in a skillset as `/document/normalized_images/*`.
259248

260249
Outputs can be mapped to an index, used as input to a downstream skill, or both as is the case with language code. In the index, a language code is useful for filtering. As an input, language code is used by text analysis skills to inform the linguistic rules around word breaking.
261250

262-
For more information about skillset fundamentals, see [How to define a skillset](cognitive-search-defining-skillset.md).
251+
For more information about skillset fundamentals, see [How to define a skillset](../../cognitive-search-defining-skillset.md).
263252

264253
### OCR skill
265254

@@ -634,13 +623,13 @@ To learn more about index concepts, see [Create Index (REST API)](/rest/api/sear
634623

635624
### Step 4: Create and run an indexer
636625

637-
So far you have created a data source, a skillset, and an index. These three components become part of an [indexer](search-indexer-overview.md) that pulls each piece together into a single multi-phased operation. To tie these together in an indexer, you must define field mappings.
626+
So far you have created a data source, a skillset, and an index. These three components become part of an [indexer](../../search-indexer-overview.md) that pulls each piece together into a single multi-phased operation. To tie these together in an indexer, you must define field mappings.
638627

639628
* The fieldMappings are processed before the skillset, mapping source fields from the data source to target fields in an index. If field names and types are the same at both ends, no mapping is required.
640629

641630
* The outputFieldMappings are processed after the skillset, referencing sourceFieldNames that don't exist until document cracking or enrichment creates them. The targetFieldName is a field in an index.
642631

643-
In addition to hooking up inputs to outputs, you can also use field mappings to flatten data structures. For more information, see [How to map enriched fields to a searchable index](cognitive-search-output-field-mapping.md).
632+
In addition to hooking up inputs to outputs, you can also use field mappings to flatten data structures. For more information, see [How to map enriched fields to a searchable index](../../cognitive-search-output-field-mapping.md).
644633

645634
```csharp
646635
private static SearchIndexer CreateDemoIndexer(SearchIndexerClient indexerClient, SearchIndexerDataSourceConnection dataSource, SearchIndexerSkillset skillSet, SearchIndex index)
@@ -784,17 +773,25 @@ CheckIndexerOverallStatus(indexerClient, demoIndexer);
784773

785774
In Azure AI Search tutorial console apps, we typically add a 2-second delay before running queries that return results, but because enrichment takes several minutes to complete, we'll close the console app and use another approach instead.
786775

787-
The easiest option is [Search explorer](search-explorer.md) in the Azure portal. You can first run an empty query that returns all documents, or a more targeted search that returns new field content created by the pipeline.
776+
The easiest option is [Search Explorer](../../search-explorer.md) in the Azure portal. You can first run an empty query that returns all documents, or a more targeted search that returns new field content created by the pipeline.
788777

789-
1. In Azure portal, in the search Overview page, select **Indexes**.
778+
1. In the Azure portal, in the search service pages, expand **Search Management** > **Indexes**.
790779

791780
1. Find **`demoindex`** in the list. It should have 14 documents. If the document count is zero, the indexer is either still running or the page hasn't been refreshed yet.
792781

793-
1. Select **`demoindex`**. Search explorer is the first tab.
782+
1. Select **`demoindex`**. Search Explorer is the first tab.
794783

795784
1. Content is searchable as soon as the first document is loaded. To verify content exists, run an unspecified query by clicking **Search**. This query returns all currently indexed documents, giving you an idea of what the index contains.
796785

797-
1. Next, paste in the following string for more manageable results: `search=*&$select=id, languageCode, organizations`
786+
1. For more manageable results, switch to JSON view and set parameters to select the fields:
787+
788+
```json
789+
{
790+
"search": "*",
791+
"count": true,
792+
"select": "id, languageCode, organizations"
793+
}
794+
```
798795

799796
<a name="reset"></a>
800797

@@ -808,7 +805,7 @@ The sample code for this tutorial checks for existing objects and deletes them s
808805

809806
This tutorial demonstrated the basic steps for building an enriched indexing pipeline through the creation of component parts: a data source, skillset, index, and indexer.
810807

811-
[Built-in skills](cognitive-search-predefined-skills.md) were introduced, along with skillset definition and the mechanics of chaining skills together through inputs and outputs. You also learned that `outputFieldMappings` in the indexer definition is required for routing enriched values from the pipeline into a searchable index on an Azure AI Search service.
808+
[Built-in skills](../../cognitive-search-predefined-skills.md) were introduced, along with skillset definition and the mechanics of chaining skills together through inputs and outputs. You also learned that `outputFieldMappings` in the indexer definition is required for routing enriched values from the pipeline into a searchable index on an Azure AI Search service.
812809

813810
Finally, you learned how to test results and reset the system for further iterations. You learned that issuing queries against the index returns the output created by the enriched indexing pipeline. You also learned how to check indexer status, and which objects to delete before rerunning a pipeline.
814811

@@ -823,4 +820,4 @@ You can find and manage resources in the Azure portal, using the All resources o
823820
Now that you're familiar with all of the objects in an AI enrichment pipeline, let's take a closer look at skillset definitions and individual skills.
824821

825822
> [!div class="nextstepaction"]
826-
> [How to create a skillset](cognitive-search-defining-skillset.md)
823+
> [How to create a skillset](../../cognitive-search-defining-skillset.md)

0 commit comments

Comments
 (0)