Spotlight

Spotlight是苹果在Tiger(10.4)中引入的一项快速搜索技术。在Leopard中,Spotlight已经无缝地整合进了Finder。
从iOS 3.0开始,Spotlight被移植到了iOS。
在OS X中,用户单击系统菜单栏右侧的放大镜图标就可以使用Spotlight。在iOS中,用户用手指滑向主屏幕画面左侧就可以打开类似的窗口。

mds

Spotlight背后的核心力量是一个索引服务器mds,mds在 MetaData 框架中,而这个框架是 CoreServices.framework 的一部分。

mds 文件路径:
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Support/mds

mds是一个没有GUI的后台服务程序。
每当有任何文件操作(创建、修改和删除)发生时,内核都会通知这个后台服务程序。这个通知机制称为 fsevents

当mds收到通知时,mds会通过工作进程 mdworker 将各种元数据信息导入数据库。
mdworker进程可以加载一个具体的Spotlight Importer(Spotlight导入器)从文件中提取元数据信息。

系统提供的导入器位于/System/Library/Spotlight目录;
用户提供的导入器位于/Library/Spotlight目录。
和QuickLook类似,这些导入器都是实现了固定API的插件(在Xcode中选择MetaData Importer项目模板时可以创建出API框架)。

系统Spotlight


用户Spotlight


命令行访问 Spotlight

在命令行可以通过以下命令访问Spotlight:

  • mdutil:管理元数据数据库
  • mdfind:发出spotlight查询
  • mdimport:配置和测试spotlight插件
  • mdls:列出文件的元数据属性
  • mdcheckschema:验证元数据的布局(译者注:这个工具在10.8中移除了)
  • mddiagnose:Lion引入的新功能,这个工具能对spotlight子系统(mds和mdworker)以及系统上的附加数据进行完整的诊断。

另外一个文档稀少的特性是通过在一些路径创建特定的文件控制Spotlight(即mds)的行为。
例如,在一个目录中创建一个.metadata_never_index隐藏文件可以防止这个目录被索引(最初是为可移动媒体设计的)。


Spotlight 插件

猜你喜欢

转载自blog.csdn.net/lovechris00/article/details/81293945