我想使用 Spotlight API 来查找epub
文件类型为 as 的文件org.idpf.epub-container
。这在 Lion 上运行良好,因为 Apple 已将org.idpf.epub-container
文件类型添加到 Lion。
我为文件编写了一个 Spotlight 导入.epub
器。mdimport
如果我使用一些文件作为输入手动运行它,epub
那么 Spotlight 将找到这些文件。但是我没有从 Spotlight NSMetaDataQuery
API 得到任何结果。(我是凭记忆输入的。对不起,如果我把名字弄错了。)如果我重新启动并重试查询,我不会得到任何结果。看起来 Spotlight 没有使用我的导入器,即使它在输出中列出mdimport -L
mdimport -r
看起来很好的属性输出。包括文件类型org.idpf.epup-container
和我定义的属性。
有没有人知道为什么 Spotlight 不会使用如果mdimport
显式调用似乎可以工作的导入器?
我有更多细节。如果我运行:
mdls -name kMDItemContentType 文件.epub
针对我得到的 epub 文件:
kMDItemContentType = "dyn.ah62d4rv4ge80n6dzqk"
即使我对同一个文件运行 mdimport -d3 我得到:
kMDItemContentType = "org.idpf.epub-container";
希望这可以帮助。
我要回答我自己的问题。提示是 kMDItemContentType 设置为某个值。由于它已设置 Spotlight 不会改变它。(如果我使用触摸更改文件的修改日期,Spotlight 可能会重新索引文件。)
但更大的解决方案是使用以下方法擦除 Spotlight 索引:
mdutil -E /卷/Macintosh\ HD
一旦 Spotlight 重建它的索引,那么所有 ePub 文件都具有正确的 kMDItemContentType 设置。