Spotlight

RSS for tag

Search for files and index your app’s content for searching using Spotlight.

Posts under Spotlight tag

32 Posts
Sort by:

Post

Replies

Boosts

Views

Activity

Results with spotlight in Core Data is not all.
I'm using Core Data to save data. Then I wanna add spotlight support. self.spotlightDelegate = StorageSpotlightDelegate(forStoreWith: description, coordinator: container.persistentStoreCoordinator) let isSpotlightDisable = UserDefaults.standard.bool(forKey: "isSpotlightDisable") if !isSpotlightDisable { self.toggleSpotlightIndexing(enable: true) } public func toggleSpotlightIndexing(enable: Bool) { guard let spotlightDelegate = spotlightDelegate else { return } if enable { spotlightDelegate.startSpotlightIndexing() } else { spotlightDelegate.stopSpotlightIndexing() spotlightDelegate.deleteSpotlightIndex { error in if let error = error { print(error) } } } UserDefaults.standard.set(!enable, forKey: "isSpotlightDisable") } It works fine on an iOS15 device, but not work on iOS 17&18. On iOS 18 devices, I can search the data when the first time to added to Core Data. But if I stop spotlight indexing and restart again, the data is never be searched. How can I to solve this? And I noticed that the problem is also exists in another dictionary app.
0
0
45
18h
How to find renamed app using old name in Spotlight?
We are planning on renaming our app. The new name is not like the current name. It will be renamed in the App Store as well as the App display name. Yet, we still want new and existing users to be able to find the app by using the old name in search/spotlight under iOS. A great example of this is entering Twitter to find the X app and it shows up in the App section in the Spotlight search. Are there any guidelines, settings, or tricks for doing this? Some have suggested adding a Spotlight search term but that will not have it show up in the App section I fear.
1
0
54
5m
Validate fail Archive bundle is invalid Unable to load ‘Info.plist’ for bundle at path
This bundle is invalid. Unable to load ‘Info.plist’ for bundle at path: ‘My App.app/Contents/Library/Spotlight/MyApp-SpotlightIndex.mdimporter’.. This mdimporter is embedded in my app with a Copy step in Build Phases and when I Archive the compiled app, I get that error when I try to Validate. The app works OK, the mdimporter Spotlight works OK, all runs fine. But the Validate on the Archive does not work, it fails with that error.
1
0
77
1d
Is semantic search working with CSUserQuery?
I'm following the video tutorial below, using the exact examples, but was not able to semantically match the results: https://developer.apple.com/videos/play/wwdc2024/10131 https://developer.apple.com/documentation/corespotlight/building-a-search-interface-for-your-app In iOS 18 and macOS 15 and later, Spotlight also supports semantic searches of your content, in addition to lexical matching of a search term. I'm on macOS 15.1, so I'd expect it should work now? Or is this depend on Apple Intelligence for some reason? Specifically I've indexed the following: Keyword: "windsurfing carmel" Literal match: the best windsurfing carmel county windsurfing lessons Semantic match: sailboarding lessons the best windsurfing carmel county windsurfing lessons Expected: find semantic match. Actual: only literal match were returned. Because CSUserQuery.prepare is only supported by macOS 15, my switch from CSSearchQuery makes no sense without the semantic search benefits. Did I miss something? I also added the corespotlight delegate extension as directed but was not able to hit the breakpoint as per the video. I wish there is the sample code for this, but couldn't find it.
1
1
113
1w
Search Messages by Date
How do I search for messages on iPhone by date? Running iOS 18.1. In the Spotlight feature, if I type “messages on 10/14” the top 3 results are messages on that date. But if I tap “search in app” I’m brought to a blank messages screen. This function would help me with work so much, and it’s like we’re almost there- but not. thanks!
1
0
130
2w
NSMetadataQuery threading issues
The code below is a simplified form of part of my code for my Swift Package Manager, Swift 5.6.1, PromiseKit 6.22.1, macOS command-line executable. It accepts a Mac App Store app ID as the sole argument. If the argument corresponds to an app ID for an app that was installed from the Mac App Store onto your computer, the executable obtains some information from Spotlight via a NSMetadataQuery, then prints it to stdout. I was only able to get the threading to work by calling RunLoop.main.run(). The only way I was able to allow the executable to return instead of being stuck forever on RunLoop.main.run() was to call exit(0) in the closure passed to Promise.done(). The exit(0) causes problems for testing. How can I allow the executable to exit without explicitly calling exit(0), and how can I improve the threading overall? I cannot currently use Swift Concurrency (await/async/TaskGroup) because the executable must support macOS versions that don't support Swift Concurrency. A Swift Concurrency solution variant would be useful as additional info, though, because, sometime in the future, I might be able to drop support for macOS versions older than 10.15. Thanks for any help. import Foundation import PromiseKit guard CommandLine.arguments.count > 1 else { print("Missing adamID argument") exit(1) } guard let adamID = UInt64(CommandLine.arguments[1]) else { print("adamID argument must be a UInt64") exit(2) } _ = appInfo(forAdamID: adamID) .done { appInfo in if let jsonData = try? JSONSerialization.data(withJSONObject: appInfo), let jsonString = String(data: jsonData, encoding: .utf8) { print(jsonString.replacingOccurrences(of: "\\/", with: "/")) } exit(0) } RunLoop.main.run() func appInfo(forAdamID adamID: UInt64) -> Promise<[String: Any]> { Promise { seal in let query = NSMetadataQuery() query.predicate = NSPredicate(format: "kMDItemAppStoreAdamID == %d", adamID) query.searchScopes = ["/Applications"] var observer: NSObjectProtocol? observer = NotificationCenter.default.addObserver( forName: NSNotification.Name.NSMetadataQueryDidFinishGathering, object: query, queue: .main ) { _ in query.stop() defer { if let observer { NotificationCenter.default.removeObserver(observer) } } var appInfo: [String: Any] = [:] for result in query.results { if let result = result as? NSMetadataItem { var attributes = ["kMDItemPath"] attributes.append(contentsOf: result.attributes) for attribute in attributes { let value = result.value(forAttribute: attribute) switch value { case let date as Date: appInfo[attribute] = ISO8601DateFormatter().string(from: date) default: appInfo[attribute] = value } } } } seal.fulfill(appInfo) } DispatchQueue.main.async { query.start() } } }
7
0
215
2w
NSMetaData Object IOS
I've been trying to access the NSMetaData information for mb4 objects that I legally downloaded from third party websites without DRM protection. I posted a request in the app forum before and didn't receive any responses from anyone, so it occurred to me to use the example apple code provided on NSMetaData Objects. Steps to reproduce: download the "simpleiclouddocument" example and changed the document extension to Mb4. It seems the query fails because the documents are outside the application directory, so I expanded the search scope to include "NSMetaDataQueryAccessibleExternalDocumentsScope" and the files are still not found. I have the URL of the file that I want the MetaData for. I understand that NSMetaData has an init object that works with a URL but it only works on MacOS and not iOS. I have alternatively tried using LPLinkPresentation and AVMetdataItem but these two alternatives appear to limit the metadata fields I can access and there is no additional object data on how to expand the links to access the other metadata items associated with the file, specifically the Author field as Mb4 files have authors in addition to other audio metadata settings. If there is additional information somewhere on those two classes that identifies how I can access the rest of the metadata fields that would likewise correct my problem.
3
0
232
Sep ’24
Spotlight App Extension does not persist custom Attributes
We are in the process of updating our legacy Spotlight MDImporter to the new macOS Spotlight App Extension. The transition works well for standard attributes such as title, textContent, and keywords. However, we encounter an issue when adding custom attributes to the CSSearchableItemAttributeSet. These custom attributes are not being persisted, which means they cannot be queried using a Spotlight NSMetadataQuery. Has anyone an idea on how to append custom attributes so that they are included in the indexed file status, as displayed by the shell command mdimport -t -d3 <path> A sample project illustrating the problem is available here: https://www.dropbox.com/scl/fi/t8qg51cr1rpwouxdl900b/2024-09-04-Spotlight-extAttr.zip?rlkey=lg6n9060snw7mrz6jsxfdlnfa&dl=1
1
0
198
Oct ’24
Is there a Spotlight volume size limit?
I am asking here after finding no information on this anywhere. There doesn't appear to be any documentation on this. I am having trouble with an 18TB volume over a simple SMB network. One iMac; one Mac Mini with attached storage, ethernet 10g. I have a 6TB volume that has no issues over the same network. Settings are all the same as far as I know. Both hard drives have a VolumeConfiguration.plist /Volumes/Media_1/.Spotlight-V100/VolumeConfiguration.plist /Volumes/Media_2/.Spotlight-V100/VolumeConfiguration.plist Media_1 is the 18TB HDD Media_2 is the 6TB HDD I ran diff on both volumes' VolumeConfiguration.plist and what jumped out was the different string in "PolicyProcess": diff /Users/john/Documents/media_2plist.txt /Users/john/Documents/media_1plist.txt |colordiff | $(brew --prefix git)/share/git-core/contrib/diff-highlight/diff-highlight 3c3 < 16D4F012-5E09-4D3B-ACD4-6768C0DA2048 = Dict { --- > 502C691E-AEE5-4729-B540-722F1C681B19 = Dict { 5,6c5,6 < PolicyProcess = mdutil < PolicyDate = Thu Jul 25 10:07:47 CST 2024 --- > PolicyProcess = STORE_ADD > PolicyDate = Tue Aug 27 19:30:08 CST 2024 Why is Spotlight choosing PolicyProcess = STORE_ADD for the 18TB HDD and PolicyProcess = mdutil for the 6TB HDD ? What is the difference between them and can I choose which PolicyProcess Spotlight uses? I can't find much from the network on the 18TB drive even after it has been re-indexed multiple times. Oddly it seems that while it is being indexed I get better results than once it has completed indexing. Thanks for any insights.
0
0
296
Sep ’24
Troubleshooting Spotlight Search Visibility for Keywords like "Food" and "Grocery"
I am seeking advice on improving the visibility of my iOS app, "noon Shopping, Food, Grocery," in Spotlight search results for certain keywords. Despite the app's name containing keywords such as "food" and "grocery," it does not seem to appear as prominently in Spotlight searches for these terms as other apps, like "Careem - rides, food & more" which appears readily when searching for "food."
1
0
387
Aug ’24
App document icon in spotlight on mac
Hello. I'm adding my mac app contents to spotlight index. I have created a dedicated exported document type which Finder also recognises and shows documents with my extension "artcl" with correct icon I provide with the app. But it does not happen in Spotlight - it shows my documents with default icon. I create items for Spotligh index as follows: let myType = UTType(filenameExtension: "artcl")! var searchableItems: [CSSearchableItem] = [] for itm in items.reversed() { let attributeSet = CSSearchableItemAttributeSet(contentType: myType) attributeSet.title = item.title attributeSet.contentDescription = item.desc attributeSet.displayName = item.name attributeSet.keywords = [ item.title ] attributeSet.comment = item.title + " " + item.desc attributeSet.contentType = "com.devaikin.spottest.artcl" let id = "artcl." + item.title + "." + item.name let indexItem = CSSearchableItem(uniqueIdentifier: id, domainIdentifier: "artcl", attributeSet: attributeSet) searchableItems.append(indexItem) let defaultIndex = CSSearchableIndex(name: "Spottest") defaultIndex.deleteAllSearchableItems() defaultIndex.beginBatch() defaultIndex.indexSearchableItems(searchableItems) ... Items are added to the spotlight and I can find them, but default icon is displayed while I would expect my exported type icon to be shown like Finder does it. Am I missing something in attributeSet setup?
0
0
312
Aug ’24
Limitations about Indexed Items for CoreSpotlight?
I know that I can index a maximum of 32767 CSSearchableItem in my application. Won't there be performance issues in a scenario where each application has the maximum number of indexes? How does the system deal with this situation? Also, let's say an application indexes the most used 32767 words, won't it abuse the system in this way and be at the top of the search results? What does Apple do about this? Is there documentation somewhere that specifically details this questions?
0
0
258
Jul ’24
onContinueUserActivity(CSSearchableItemActionType, perform) does not work on a SwiftUI macOS app
onContinueUserActivity(CSSearchableItemActionType, perform) works as expected on iOS when we search and select an item from Spotlight, but nothing happens when we do the same on a SwiftUI macOS app. var body: some Scene { WindowGroup { MyView() .onContinueUserActivity(CSSearchableItemActionType, perform: handleSpotlight) } } func handleSpotlight(_ userActivity: NSUserActivity) { // Is not called... } How can we respond to a user clicking a Spotlight result from our apps on macOS?
1
1
349
Jul ’24
Ios18 bug on “Help apple improve search”
hey guyss…. Im currently using ios18 developer beta 2 on my iphoen 12…Idk if u guys noticed it or not.. but when i turn off the toggle for “Help improve apple search” (settings->search->help improve apple search) it again turns on without my knowledge seconds aftr i close the page. Ive tried restarting my iphone & many more.. nothing seems to work.. im kindoff a more private guy i usually turn off apple analytics.. usage diagnostics and i always make sure data is stored only on my local storage.. and this bug kinda piss me off 😕. i’ve given u the link below to check it out. Peace. https://youtube.com/shorts/YfVDCA-Dfrs?si=qLcl0mWL-Jm9iJFz
1
1
593
Jul ’24
CSUserQuery Generating Model Load Failure - No Results
I'm trying CoreSpotlight on the 18b1 seed on iOS and after submitting my query, I'm getting multiple errors about what looks like missing models: [Model loading] model loading failed with err -1000 for model path /Users/hunter/Library/Developer/CoreSimulator/Devices/0AF4F46E-5510-4458-B61C-F8A153155809/data/Containers/Data/Application/1D8580C0-AC80-4949-9FDA-31DB463BDA5C/Library/Spotlight/Resources_V3/Default/models/spotlight_l2.mlmodelc and directives path /Users/hunter/Library/Developer/CoreSimulator/Devices/0AF4F46E-5510-4458-B61C-F8A153155809/data/Containers/Data/Application/1D8580C0-AC80-4949-9FDA-31DB463BDA5C/Library/Spotlight/Resources_V3/Default/directives/directives_l2.mdplist I am calling CSUserQuery.prepare() but that doesn't seem to make a difference. Is there more to this than what is on this page? https://developer.apple.com/documentation/corespotlight/building-a-search-interface-for-your-app?changes=latest_minor
3
1
503
Jul ’24