1

Это не вопрос с подвохом в угловых случаях или чем-то в этом роде - просто, если у Spotlight уже есть файл, импортированный и проиндексированный в его базе данных, и этот файл перемещен или скопирован (скажем, сценарий использовал mv или cp для него), Сравнивает ли Spotlight контрольные суммы (или что-то в этом роде), чтобы определить «это тот же файл, нет необходимости снова заглядывать внутрь него», или он просто вызывает тот импортер, который зарегистрирован для этого типа снова (что вызовет повторный анализ ).

Если возможно, укажите источник, из которого вы узнали об этом; Дело в том, что я действительно хочу быть уверен, какое из них является указанным поведением (его слишком легко ввести в заблуждение, экспериментируя с такой непостоянной системой, как Spotlight).

В качестве фона, идея заключается в том, что у меня есть собственный импортер Spotlight, который занимает довольно много времени (с точки зрения того, сколько времени занимает импорт файла), и я хочу знать, безопасно ли писать сценарий оболочки, который перемещает файлы, которые он индексирует входящие / исходящие папки с поддержкой Spotlight, не беспокоясь о том, что Spotlight сходит с ума при переиндексации всего.

2 ответа2

2

По сути, его не нужно переиндексировать, поскольку любой файловый ввод / вывод, проходящий через ядро, включая команды mv и cp UNIX, вызывает обновление индекса Spotlight. Таким образом, индекс всегда актуален.

С тех пор прожектор определенно прошел долгий путь, но когда вышел 10.4 Tiger, было несколько хороших статей о том, как он работает, объясняющих технологию. Одна из таких статей находится во всеобъемлющем обзоре Ars Technica Tiger. Цитата:

Предварительно созданные индексы допускают очень быстрый поиск, но они также предопределяют потенциальную проблему. Для индекса легко выйти из синхронизации с текущим состоянием файловой системы, а индекс, который устарел, не очень полезен. Чтобы обеспечить точные результаты, индекс должен точно отражать состояние всех файлов «в режиме реального времени».

...

Каждый импортер метаданных отвечает за сканирование файла и возврат всех метаданных, которые он может извлечь - из структур метаданных файловой системы, содержимого файла или всего, что он хочет рассмотреть. Метаданные возвращаются в виде набора пар ключ / значение и добавляются в индексную запись Spotlight для файла.

Плагины для импорта метаданных хранятся в папках Spotlight в любой из различных папок библиотеки. Как обычно, более конкретные местоположения имеют приоритет: ~/Library/Spotlight переопределяет /Library/Spotlight и так далее.

Любой файл ввода / вывода, который проходит через ядро Tiger, запускает соответствующий импортер метаданных. Эта интеграция на уровне ядра гарантирует, что индексы Spotlight всегда актуальны.

Надеюсь это поможет. Другие могут пролить свет на улучшения архитектуры Spotlight с момента выхода Tiger. Я всего лишь скромный пользователь.

1

Чтобы узнать, происходит ли переиндекс с mv/cp. Вы можете следить за этим с помощью Fseventer. Он наблюдает за изменениями файловой системы, используя тот же API, что и Spotlight

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .