目前,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 中消失。
问题的解决方案:
- 编写一个脚本,每小时运行一次,以重新索引任何新的 .docx
- 删除 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 文件会立即自动编入索引。我不确定这个解决方案是否会持续,以及它是否会在软件更新中幸存下来。