<!--
{
  "availability" : [
    "iOS: 27.0.0 -",
    "iPadOS: 27.0.0 -",
    "macCatalyst: 27.0.0 -",
    "macOS: 27.0.0 -",
    "visionOS: 27.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "CoreSpotlight",
  "identifier" : "/documentation/CoreSpotlight/CustomStage/execute(groupedItems:)",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "Core Spotlight",
      "FoundationModels"
    ],
    "preciseIdentifier" : "s:31_CoreSpotlight_FoundationModels11CustomStageP7execute12groupedItemsAA18SearchPipelineDataVSDy0aB023SearchableItemAttributeVSayAH0mN0VGG_tYaKF"
  },
  "title" : "execute(groupedItems:)"
}
-->

# execute(groupedItems:)

Generates output data from the specified dictionary of attributes and searchable items.

```
nonisolated(nonsending) func execute(groupedItems: [SearchableItemAttribute : [SearchableItem]]) async throws -> SearchPipelineData
```

## Parameters

`items`

A dictionary that associates a set of [`CSSearchableItem`](/documentation/CoreSpotlight/CSSearchableItem) objects to an attribute key they all contain.

## Return Value

A pipeline data structure with data your stage produced. Make sure the output you return matches the output
you specified in the [`outputType`](/documentation/CoreSpotlight/CustomStage/outputType) property.

## Discussion

If your stage supports a set of searchable items grouped by the keys they support as input, implement this method and use it
to generate your stage’s supported output data. Write your code to run in parallel with other instances of your stage and instances
of other stages. The best approach is to use only the contents of the `items` parameter and local intermediate values you
create to deliver the output data.

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)