Я хочу использовать Spotlight API для поиска epub
файлов с типом файла org.idpf.epub-container
.Это прекрасно работает на Lion, так как Apple добавила в Lion тип файла org.idpf.epub-container
.
Я написал импортер Spotlight для файлов .epub
.Если я запускаю его вручную, используя mdimport
с некоторыми epub
файлами в качестве входных данных, Spotlight найдет эти файлы.Но я не получаю результатов от Spotlight NSMetaDataQuery
API.(Я печатаю это по памяти. Извините, если я неправильно понял имя.) Если я перезагружаюсь и повторяю запрос, я не получаю никаких результатов.Похоже, что Spotlight не использует мой импортер, хотя он указан в выводе mdimport -L
Атрибут вывода из mdimport -r
выглядит нормально.Включая тип файла org.idpf.epup-container
и мои определенные атрибуты.
Есть ли у кого-нибудь идеи, почему Spotlight не использует импортер, который работает, если явно вызывается mdimport
?
Iесть больше деталей.Если я запускаю:
mdls -name kMDItemContentType file.epub
для файла epub, я получаю:
kMDItemContentType = "dyn.ah62d4rv4ge80n6dzqk"
дажехотя, если я запускаю mdimport -d3 для того же файла, я получаю:
kMDItemContentType = "org.idpf.epub-container";
Надеюсь, это поможет.
I 'Я собираюсь ответить на мой собственный вопрос.Подсказка в том, что kMDItemContentType установлен на что-то.Поскольку он установлен, Spotlight не изменит его.(Может быть, Spotlight переиндексирует файл, если я использую сенсорный для изменения даты изменения файла.)
Но большее решение - стереть индекс Spotlight с помощью:
mdutil -E / Volume/ Macintosh \ HD
Как только Spotlight перестроит свой индекс, все файлы ePub будут иметь правильную настройку kMDItemContentType.