【问题标题】:Is it possible for a native OS X app to read and copy the Spotlight search index?本机 OS X 应用程序是否可以读取和复制 Spotlight 搜索索引?
【发布时间】:2011-12-24 00:00:04
【问题描述】:

我不想以任何方式更改索引,只需阅读它,监控它的变化,然后复制它。它将使用本机应用程序/服务,该应用程序/服务将在后台运行。我假设我的目标是 10.6+,但这不是一成不变的。

实际索引在哪里?我可以以任何语义上有用的方式阅读它吗?

四处搜索,我没有找到对实际 Spotlight 索引位置的任何引用,也没有找到用于读取整个内容的 API。我确实找到了Search Kit Reference,它似乎解释了底层技术的工作原理并且可能会有所帮助,但没有解释如何检索整个索引或随着时间的推移监控索引。

我还注意到一个名为 Houdah 的应用程序,它预示着为 Spotlight 提供改进的前端,这可能很有趣,尽管我不知道他们是如何实现它们的效果 - 如果它实际上只是一个调用相同搜索的前端Kit API 是针对同一索引的 Spotlight,这不是我所追求的……

编辑:不敢相信我没有读过wikipedia article on Spotlight - 很好的参考资料,但我认为我的问题是成立的。

(我是一个前端的网络人,为noobishness道歉。)

更新:一位 OS X 开发者朋友认为它会以隐藏文件的形式存储在 SQLite 数据库中,但在他花费的几分钟内找不到实际文件。他确实找到了一个隐藏的.spotlight 目录,但是这个目录是空的。

【问题讨论】:

    标签: macos search spotlight


    【解决方案1】:

    在 Mac OS X 10.7 上——以前的版本有很大不同——Spotlight 索引存储在/.Spotlight-V100/Store-V2 中。存储格式未记录,但绝对不是 SQLite。

    我怀疑是否有任何有用的方法可以从 Spotlight 索引中提取数据,而无需进行不切实际的逆向工程。即使您这样做了,它也可能会因新版本的 Mac OS X 而中断。

    【讨论】:

    • 维基百科说它在达尔文,所以不需要逆向工程,你只需要找到相关的来源(也许在邮件列表中寻求进一步的帮助也是个好主意)
    • 我怀疑维基百科在这一点上是错误的 - opensource.apple.com 上没有任何内容看起来像是 Spotlight 的一部分,并且没有引用来源。
    • 感谢您提供非常有用的答案。您是否认为与其直接阅读索引,不如有一种方法可以进入构建和更新它的过程? (无论进程调用 SKIndexAddDocumentWithText 可以搭载调用 MyIndexAddDocumentWithText?再次,请原谅我对 OS X 的无知。)或任何其他创建文件系统辅助索引的想法(缺少从后到前构建整个自定义索引器) ?
    • 可以通过FSEvents API 使用与 Spotlight 相同的通知系统。不过,我不相信有任何方法可以直接连接到索引器 (mds),而无需大量黑客攻击。
    • 感谢您的指导。回答和建议被正式接受。
    猜你喜欢
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 2020-02-10
    相关资源
    最近更新 更多