Skip to main content
What Rollup.shared.search(_:) returns: every result in order with what the index holds about it, the query as search read it, and how long it took.
String
The search as asked.
[SearchResult]
The results, most relevant first.
SearchPlan
How search read the query.
Double
Seconds for the whole search.
[String: Double]
Seconds for its parts, by name, such as locationResolution, filtering, embedding and text.
JSONValue?
What the index covers: counts, dates and media.

SearchPlan

String
semantic_search, location_search, date_search, capture_search or holiday_search.
String
content, place, content_and_place, place_type, holiday or metadata.
String
What was left to match images and text against once dates, media and places were read.
String
most_relevant or newest_first.
JSONValue
The whole plan: the date, capture, location and place filters search applied, with its policies and counts.

SearchResult

One asset and what the index holds about it.
String
The asset’s PhotoKit local identifier.
Date?
When it was taken.
TimeZone?
The time zone where it was taken.
MediaType
.photo, .video or .screenshot.
Bool
Whether the person marked it as a favorite.
Location?
Where it was taken, as the on-device geography placed it.
[Label]
What it shows.
[Place]
The venue its visit resolved to. Empty when places is off or no venue was resolved.
[String]
Cuisines of its visit, on food photos.
String?
The text search matches against: sign text, text read from the preview, or a screenshot’s text.
Screenshot?
What was read from a screenshot.
Double?
The relevance model’s probability, for image matches.
String?
The words of the asset’s text that hold the query, for text matches.
Double?
Search’s score for this result.
Double?
The retrieval score before ranking.
Double?
How closely its place matched a place in the query.
[String]
Why it matched, such as image, text or place.
JSONValue?
The named places the result matched.

Location

String?
String?
String?
String?
String?
Double?
Double?
String
The neighborhood, city and country that are known, joined with commas.

Label

String
The label’s concept ID.
String
The label, such as sushi or dog.
Double?
A probability: Apple’s confidence, the dish model’s, or the learned selector’s.
Double?
The image model’s cosine similarity, for labels without a probability.

Place

String
The venue’s name.
String?
The venue’s category.
Double
How confident the place resolution is.

Screenshot

String
The kind of app the screenshot was taken in.
String
What the screenshot is about.
String
What the person was doing.
[String: Double]
Each field’s top probability, by field: app_kind, topic and action.
[String]
Kinds of sensitive content the screenshot holds.
String?
A date it shows, as YYYY-MM-DD or --MM-DD, with THH:MM when a time was shown.
String
How the shown date relates to when the screenshot was taken.
[Entity]
Entities Apple’s on-device model read, each with an id, a type and a value.
String
Whether entities were read, and if not, why.