Spotlight es el indexador de búsqueda inteligente de Apple para Mac OS. A continuación se explica cómo utilizar sus utilidades de metadatos para obtener más información sobre sus documentos.
Spotlight se ejecuta en segundo plano en su Mac o iOS dispositivo e indexa y escanea silenciosamente el contenido de sus documentos, de modo que cuando busca algo, pueda encontrar resultados rápidamente.
El trasfondo principal demonio en Spotlight se llama núcleo destacadoy puede consumir hasta un 8-10% del tiempo de la CPU cuando se ejecuta a toda velocidad.
En Silicio de manzana En Mac, corespotlightd puede ejecutar hasta cuatro subprocesos a la vez durante el pico de indexación en segundo plano.
Si es desarrollador de Apple, puede agregar el Destacado central framework a su aplicación y haga que indexe el contenido de su aplicación internamente, de modo que el contenido esté disponible automáticamente para los usuarios de la aplicación.
Hay adicionales API destacadas en el marco de Foundation que le permiten realizar búsquedas locales en datos de Spotlight desde su aplicación.
Querrá agregar Core Services.framework a su Xcode proyecto también, ya que es donde residen las API de metadatos de archivos.
También hay iCloud Funciones destacadas que no cubriremos aquí.
Configurar qué volúmenes se indexan
En macOS, puedes indicar qué volúmenes quieres que indexe Spotlight y cuáles no. Por defecto si no lo haces excluir volúmenes de Spotlight, serán indexados.
Si excluye volúmenes del índice de Spotlight, su contenido no se mostrará en las búsquedas de Spotlight.
Si tiene más de un volumen en la unidad de su Mac, o si tiene unidades externas conectadas, puede habilitar o deshabilitar Spotlight (y siri) en cada.
Para hacerlo, primero abra Configuración del sistema en macOS seleccionando Ajustes del sistema desde el menú de manzana en la barra de menú del Finder.
En el lado izquierdo de Configuración del sistema, desplácese hacia abajo y haga clic en Siri y foco. En el panel Siri y Spotlight, puedes activar y desactivar Siri, configurar un atajo de teclado, configurar el idioma y cómo Siri maneja el historial.
Debajo hay una sección de Spotlight. Aquí puede establecer qué tipos de documentos desea que indexe Spotlight.
Si desactiva un tipo particular de documento o datos en esta sección, Spotlight ignorará todos los documentos o datos de esos tipos durante la indexación.
Si se desplaza hasta el final del panel, verá un botón etiquetado Privacidad destacada. Haga clic en él para abrir la hoja de Privacidad.
La hoja de privacidad contiene una lista de todos los volúmenes de almacenamiento que Spotlight tiene actualmente. Excluyendo de la indexación, que en la mayoría de los casos, de forma predeterminada, no hay volúmenes o solo el disco de inicio.
Para agregar o eliminar volúmenes a la hoja Privacidad, puede arrastrarlos hacia dentro o fuera de ella, o puede hacer clic en el + o – botones debajo de la lista.
Una vez que se agrega un volumen a la lista, Spotlight se detiene indexándolo.
Cuando esté satisfecho con la lista de exclusión de privacidad, haga clic en Hecho para descartar la hoja. Cierre la configuración del sistema.
Cuando corespotlightd indexa los datos de sus volúmenes, busca el contenido de los archivos, pero también busca e indexa el metadatos. Los metadatos se pueden definir como datos informativos asociados con archivos, pero no contenidos dentro de los archivos mismos.
Los metadatos incluyen (entre otros) elementos como la fecha de creación y última modificación del archivo, el tamaño, la versión, el tipo, el nombre y los comentarios del Finder que se muestran en las ventanas Obtener información.
Spotlight utiliza el API de metadatos de archivos en el marco de servicios principales de Apple para buscar y leer metadatos.
Hay cuatro tipos de datos principales en la API de metadatos de archivos:
- MDSquema
- MDArtículo
- MDLabelDominio
- MDQuerySortOptionFlags
No entraremos en todos los detalles de los tipos de datos, pero el tipo principal que almacena una referencia a un elemento del sistema de archivos y sus metadatos es el MDItem
tipo.
Usando un MDItem
y las API de servicios principales, puede recuperar, ordenar y almacenar metadatos para elementos en sistemas de archivos locales.
Importadores destacados
Si abre la carpeta /Biblioteca/Spotlight en el disco de inicio de su Mac, es posible que observe uno o más archivos con un .mdimportador extensión. Estos son los focos Complementos de importación de metadatos.
Por ejemplo, las aplicaciones Pages de Apple y iBooks Author originales tienen complementos .mdimporter. También lo hacen algunas de las aplicaciones 365 de Microsoft. Otras aplicaciones también los proporcionan.
Puede escribir complementos .mdimporter personalizados en Xcode de Apple, colocarlos en la carpeta /Library y Spotlight los usará para importar metadatos de archivos compatibles con sus aplicaciones.
Los complementos .mdimporter son esencialmente paquetes de código e información que le indican a Spotlight qué tipos de metadatos se pueden importar y cómo acceder a esos datos. Al utilizar un .mdimporter personalizado, puede permitir que su aplicación almacene metadatos adicionales y los proporcione a Spotlight para su indexación.
Apple también tiene un documento para desarrolladores (algo más antiguo) titulado Guía de programación del importador Spotlight que le muestra cómo escribir un .mdimporter.
Apple y terceros también proporcionan varias herramientas de línea de comandos (CLI) que puede usar en la aplicación Terminal de macOS para acceder a los metadatos de Spotlight en los objetos del sistema de archivos almacenados en sus dispositivos.
Spotlight almacena sus metadatos indexados en una base de datos local en cada volumen de disco montado. Las bases de datos de metadatos de Spotlight se denominan historias.
Cada almacén contiene los metadatos indexados de cada objeto del sistema de archivos junto con algunos datos adicionales que agilizan las búsquedas de Spotlight. Al almacenar y actualizar los metadatos de los archivos en una base de datos separada, Spotlight puede buscar y recuperar datos mucho más rápido, ya que no tiene que atravesar la jerarquía del sistema de archivos cada vez.
En los volúmenes APFS, Spotlight también utiliza algunos de los metadatos del volumen interno combinados con los metadatos de la tienda para una búsqueda más rápida y precisa.
Hay muchos comandos de la utilidad Spotlight CLI disponibles, pero los cuatro claves que probablemente querrás usar son:
- mdutil
- mdiimportar
- mdls
- mdfind
Puede obtener información de uso sobre cualquiera de estos en la Terminal abriendo Terminal y luego escribiendo man
seguido de un espacio, el nombre de la utilidad, luego presionando Devolver en tu teclado.
Tenga en cuenta que algunos de los comandos requieren un parámetro del sistema de archivos después del nombre del comando y otros no. Por ejemplo mdutil
no lo hace, pero mdattributes
hace.
Para salir del man
Sistema (manual) en Terminal pulse Control-Z
en tu teclado.
mdutil
El mdutil
El comando es una utilidad sencilla que ayuda a administrar los almacenes de metadatos de Spotlight en su Mac. Tenga en cuenta que se debe montar un volumen en el escritorio en Finder para mdutil
para trabajar en ello.
Por ejemplo, usando mdutil
puede activar y desactivar las tiendas de Spotlight para volúmenes específicos, deshabilitar las búsquedas en ese volumen, borrar la tienda de un volumen, mostrar el estado de indexación de Spotlight para un volumen y más.
También puede aplicar comandos específicos a los almacenes de Spotlight en cada volumen indexado y vaciar los cachés del almacén de Spotlight para forzar el uso directo del propio almacén.
Tipo man mdutil
y presione Devolver en tu teclado en Terminal para completar mdutil
uso.
mdiimportar
mdimport
es una utilidad CLI de Spotlight que le permite importar manualmente todos los metadatos buscables desde una jerarquía de sistema de archivos a un almacén de metadatos de Spotlight. Utiliza los complementos .mdimporter mencionados anteriormente para importar y buscar datos.
Puedes usar mdimport
para imprimir todos los elementos de metadatos almacenados para cada elemento indexado en una jerarquía del sistema de archivos, excepto los elementos almacenados con el kMDItemTextContent
key ya que esos elementos contienen el contenido de texto real de los elementos del sistema de archivos.
También puedes usar mdimport
para probar los complementos .mdimporter que usted o su equipo escriban.
Tipo man mdimport
y presione Devolver en tu teclado en Terminal para completar mdimport
uso.
mdls
mdls
es una utilidad que enumera metadatos atributos para un solo archivo en el disco usando una clave de metadatos predefinida (o ‘etiqueta’). Apple define la mayoría de las claves de metadatos utilizadas por Spotlight, pero si escribe su propio .mdimporter, puede definir sus propias claves.
Tipo man mdls
y presione Devolver en su teclado en Terminal para mdls
uso.
mdfind
mdfind
es una utilidad flexible y poderosa que le permite encontrar todos los objetos en una jerarquía de sistema de archivos que coincidan con metadatos específicos que especifique, buscando en las tiendas Spotlight en un volumen particular.
Usando varias opciones para mdfind
puede iniciar una búsqueda en un lugar específico en la jerarquía de un sistema de archivos, especificar qué elementos de metadatos deben coincidir y especificar nombres de archivos específicos que deben coincidir.
mdfind
devolverá sólo los resultados de los archivos que coincidan con los criterios de búsqueda que haya especificado.
Puedes cancelar una mdfind
buscar mientras se está ejecutando escribiendo Control-C en tu teclado.
También hay un -interpret
bandera a mdfind
que le permite especificar una cadena en lenguaje natural como si la hubiera escrito en Spotlight en el Finder. mdfind
interpretará la cadena y ajustará su búsqueda en consecuencia.
También puedes combinar mdfind
con otras utilidades estándar de UNIX como grep
para realizar búsquedas complejas y canalizar los resultados a la salida estándar, incluido un archivo.
Tipo man mdfind
y presione Devolver en su teclado en Terminal para mdfind
uso.
Hay varias utilidades adicionales de Spotlight que no se mencionan aquí y que cubriremos en un artículo futuro.
Claves de atributos
Spotlight y los metadatos de archivos de servicios principales funcionan almacenando cada elemento de metadatos en una tienda usando una clave única o cadena. Cada clave le indica a Spotlight y a la API qué elemento de metadatos le interesa.
Apple define las claves de metadatos como cadenas de tipo Core Foundation CFString
– un tipo de cadena común de Core Foundation utilizado en casi todo el software relacionado con Apple. Con la API de Core Foundation también puede manipular CFStrings directamente desde el código.
Apple enumera la mayoría de las claves de atributos de metadatos en la documentación de la API de metadatos de archivos mencionada anteriormente. La mayoría de las claves comienzan con el prefijo. kMD
(abreviatura de ‘constante’ – ‘metadatos’).
Para utilizar la API de metadatos de archivos, normalmente utiliza una de sus funciones o una de Spotlight y especifica una clave de metadatos para indicar qué información de metadatos desea utilizar. Las claves se pueden utilizar tanto al recuperar como al escribir metadatos.
Por ejemplo, en Rápidola clave API de metadatos para el elemento de metadatos ‘fecha de adición’ para cualquier objeto del sistema de archivos determinado se define como:
let kMDItemDateAdded: CFString!
const CFStringRef kMDItemDateAdded;
(En Objective-C CFStringRef
es el tipo Core Foundation opaco para un CFString).
Si es desarrollador de Apple y utiliza la API de metadatos de archivos, se encontrará utilizando las claves de metadatos con frecuencia.
Para archivos multimedia de audio/vídeo, Apple proporciona una API adicional en el Fundación AV estructura.
Esto se debe a varias razones, como que los metadatos multimedia generalmente deben cargarse de forma asincrónica en tiempo de ejecución para evitar la latencia durante la reproducción multimedia, mientras que algunos metadatos son requeridos por los estándares multimedia de la industria. Algunas leyes en varias regiones también exigen que los metadatos del propietario y del autor se incrusten en los archivos multimedia de determinadas maneras.
El tipo de datos del elemento de metadatos central de Apple en AVFoundation se denomina AVMetadataItem
. AVFoundation proporciona varias API para acceder y escribir un AVMetadataItem
.
También hay un conjunto correspondiente de AVMetadataItem
atributos (claves) utilizados para acceder a un AVMetadataItem
.
Cada recurso multimedia de AVFoundation está definido por un tipo de datos de AVAsset
.
Apple define las pistas dentro de cada activo como un AVAssetTrack
.
Cada AVAsset
o pista puede tener uno o más AVMetadataItem
adjunto a.
puedes crear AVAsset
objetos en código utilizando varias API de AVFoundation que pueden cargarlos desde un archivo (por ejemplo, un archivo QuickTime o .mp3), o incluso desde una transmisión en vivo de Apple HLS.
También deberías consultar la API de carga de medios asincrónica implementada como protocolo AVFoundation. AVAsynchronousKeyValueLoading
.
Una vez que tengas un AVAsset
o AVAssetTrack
objeto en el código, puede manipular sus atributos de metadatos a voluntad y escribirlos nuevamente en su fuente.
AVFoundation es un marco complejo y existen cientos de claves para su API.
Los metadatos de Spotlight parecen un tema complejo al principio, pero su API es bastante sencilla de usar. Las utilidades CLI también son sencillas y fáciles de entender después de un poco de práctica.
Con estas herramientas puede personalizar y buscar sus datos de Spotlight en todos los volúmenes indexados sin demasiado esfuerzo.