为什么苹果 Spotlight 找不到 docx 的内容?

为什么苹果 Spotlight 找不到 docx 的内容?

目前,spotlight 只会搜索 docx 文件的标题,而不会搜索内容。有什么办法可以解决这个问题吗?

答案1

是的,有办法。我的回答基于此讨论Apple 社区.我的总结:

有两个用于 Office 文档的聚光灯导入器。

  • /Library/Spotlight/Microsoft Office.mdimporter

  • /系统/库/Spotlight/RichText.mdimporter

两者都包含在 MacOS 中,并且 Microsoft Office 导入器已在最近的 MacOS 更新中更新(我已经检查了 10.12.4 和 10.12.5)。

默认情况下,当 Word 更改文档时,会使用 MS 导入器。问题就出在这里!Apple 导入器可以正常工作。

通过执行以下两个命令,您可以看到您的文档在 Spotlight 搜索中出现和消失:

$ mdimport -d1 [docx 路径]

它使用系统默认导入器 /System/Library/Spotlight/RichText.mdimporter 并且文档出现在 Spotlight 中。

$ mdimport -d1 -g /Library/Spotlight/Microsoft\ Office.mdimporter [docx 路径]

并且该文档将从 Spotlight 中消失。

问题的解决方案:

  1. 编写一个脚本,每小时运行一次,以重新索引任何新的 .docx
  2. 删除 Microsoft 提供的导入器 /Library/Spotlight/Microsoft Office.mdimporter

我已经删除了 Microsoft 导入器。每次更新 Office 后我都必须记得删除它。

警告:如果您删除 Microsoft 导入器,Spotlight 将不再索引 Excel 文件的内容!

请注意,我对这个答案并不满意。我已将 Microsoft Office 导入器从我的 MacBook(索引工作正常)复制到我的桌面(它一直失败),现在所有新的或修改过的文档都已正确索引。两者都运行 10.12.5。当在终端中使用 mdimport 索引文档时,两者都会出现架构不匹配错误。

答案2

从我在这里和 Apple 社区上读到的内容来看,我了解到问题在于 /Library/Spotlight/Microsoft Office.mdimporter 用于索引 docx 文件,但它无法正确处理。删除导入器可以解决问题,但会破坏旧的 Word (.doc) 和 Excel 文件索引。显式调用 mdimport 也可以,但每次修改文件时都必须这样做。我不确定 Spotlight 如何决定使用哪个导入器来处理特定文件类型,但在行为不当的 Microsoft mdimporter 的 info.plist 中,我发现了对 docx 的提及。我制作了 Info.plist 的备份副本,删除了描述 docx 的数组元素 (…):

    <dict>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.data</string>
        </array>
        <key>UTTypeDescription</key>
        <string>Microsoft Word document</string>
        <key>UTTypeIdentifier</key>
        <string>com.microsoft.word.openxml.document</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>com.apple.ostype</key>
            <string>WXBN</string>
            <key>public.filename-extension</key>
            <array>
                <string>docx</string>
            </array>
            <key>public.mime-type</key>
            <string>application/vnd.openxmlformats-officedocument.wordprocessingml.document</string>
        </dict>
    </dict>

并保存。但是,新创建或编辑的 docx 文件仍然无法通过 Spotlight 搜索。我不确定 Spotlight 是否注意到了我所做的更改,所以我重新启动了 Mac,但情况仍然相同。最后,我在 mdimporter ( touch /Library/Spotlight/Microsoft\ Office.mdimporter) 上更改了修改日期。此后,我创建和修改的 docx 文件会立即自动编入索引。我不确定这个解决方案是否会持续,以及它是否会在软件更新中幸存下来。

相关内容