专利名称:向第三方应用的搜索扩展能力的制作方法
技术领域:
本公开涉及将搜索能力扩展到计算装置上的第三方应用。
背景技术:
当前,已经开发了许多应用以在多功能装置上运行,例如包括媒体播放器的蜂窝电话、个人数字助理(PDA)等。许多这些应用是由多功能装置的卖方之外的来源提供的,因此它们通常称为第三方应用。这些应用可以执行各种功能,例如提供娱乐、社交网络等。在执行这些功能中,多功能装置可以访问存储在这些多功能装置中的内容或基于网络(例如因特网)的内容。为了使多功能装置的用户能够更简单更便利地组织和管理多功能装置,安装在多功能装置上的操作系统通常提供搜索能力。因为安装在多功能装置上的许多应用是第三方应用,所以传统的安装在多功能装置上的操作系统没有将它们的搜索能力扩展到这些第三方应用。
发明内容
某些实施例包括环境中的一个或多个应用程序接口(API),与其他程序代码进行交互的调用程序代码被通过这一个或多个接口而调用。经由调用程序与被调用代码之间的 API,可以发送各种函数调用、消息或其他类型的调用,这些调用和消息还可以包括各种参数。另外,API可以给调用程序代码提供下述能力能够使用在API中定义、并在被调用的程序代码中实现的数据类型或类。至少某些实施例包括由调用软件组件通过API而与被调用的软件组件进行交互的环境。用于通过API在这种环境下进行操作的方法包括通过API发送一个或多个函数调用、消息、其他类型的调用或参数。本发明的至少某些实施例包括环境中的一个或多个API,搜索能力被扩展到多功能装置上的一个或多个第三方应用。各种函数调用或消息经由多功能装置的操作系统和第三方应用之间的API被发送。示例性的API发送函数调用以实现对与第三方应用相关联的内容的标引和搜索。本公开的某些实施例包括用于将搜索能力扩展到安装在多功能装置上的第三方应用的方法。在一个实施例中,与第三方应用相关联的记录在下述过程中被标引该过程与安装在使用专用于第三方应用的搜索插件的多功能装置上的其他第三方应用、系统应用和搜索包是分开的。注意,标引可以在不调用第三方应用的情况下执行。另外,被标引的记录可以响应于用户的搜索查询而在不调用(诸如,发起或运行)第三方应用的情况下被搜索。根据本公开的某些实施例,安装在多功能装置上的第三方应用可以提供专用于该第三方应用的搜索插件。该搜索插件可以被发起以将与第三方应用相关联的记录传送到多功能装置上在单独过程中运行的搜索后台程序。记录的标识符(ID)可以指定当在响应于用户搜索查询而产生的搜索结果中显示记录时,记录的特征应当如何。每个ID可以进一步包括本地ID,本地ID具有与相应的记录相关联的文档内的不同类型内容相对应的子ID。还描述了执行以上提及的方法中一种或多种的各种装置以及在被处理系统执行时使处理系统执行这些方法的机器可读介质。还描述了其他的方法、装置和机器可读介质。
将参考附图来对本发明进行描述,其中图1显示了可用于本发明的某些实施例的示例性API结构的方框图;图2为可用于本发明的某些实施例的软件栈的示例性实施例;图3为根据本发明的一个实施例,搜索后台程序与运行在多功能装置上的第三方应用之间交互的图;图4是多功能装置上给第三方应用建立搜索和标引能力的方法的一个实施例的流程图;图5是多功能装置上由第三方应用处理应用数据中的变化的方法的一个实施例的流程图;图6是多功能装置上由搜索后台程序处理与第三方应用相关联的应用中的数据变化的方法的一个实施例的流程图;图7是多功能装置上由搜索后台程序标引应用数据的方法的一个实施例的流程图;图8是多功能装置上由应用标引器标引应用数据的方法的一个实施例的流程图;图9是搜索后台程序对与第三方应用相关联的经标引应用数据进行搜索的方法的一个实施例的流程图;图10为在多功能装置上的搜索数据库的一个实施例;图11为一个示例性文档的本地标识符的一个实施例;图12是根据本发明的一个实施例的装置的透视图;图13显示了包括无线通信能力的无线装置的实施例;图14显示了根据本发明的一个实施例的装置的另一个实例。
具体实施例方式本公开的各种实施例和方面将参考以下的详细讨论来描述,并且附图将示例说明各种实施例。以下说明和附图是对本发明的示例说明,不能解释为对本公开的限制。许多具体细节被描述以提供对本发明的各种实施例的全面理解。然而,在某些例子中,为了提供对本发明的实施例的简要的讨论,已知的或传统的细节不被描述。以下具体实施方式
的某些部分将以算法的形式来呈现,这些算法包括对存储在计算机存储器中的数据的操作。算法总的来说是导向期望的结果的操作的自洽序列。这些操作通常需要或涉及到物理量的物理操作。通常地,尽管不是必须地,这些量采用能够进行存储、传输、组合、比较和以其他方式操作的电信号或磁信号的形式。已经发现,主要出于通常使用的原因,将这些信号称为比特、值、要素、符号、字符、项、数字等有时是便利的。然而应该牢记,所有的这些和相似的术语与适当的物理参数有关,并且仅仅是应用到这些参数的便利标记。除非在以下讨论中明确地另外特别说明,应当知道,贯穿全文, 利用诸如“处理”、“计算”、“运算”、“确定”、“显示”或类似的术语进行的讨论可以指数据处理系统或类似的电子装置的动作和处理,这些动作和处理用来将系统寄存器和存储器中表示物理(电子)量的数据操纵和转换为类似地在系统存储器或寄存器或其它这样的信息存储器、传输或显示装置中表示物理量的其它数据。本发明涉及的设备用来执行这里描述的操作中的一项或多项。该设备可以是为了所需目的而专门构造的,也可以包括由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。这样的计算机程序可以被存储在机器(例如计算机)可读存储介质上, 该介质例如但不限于任何类型的盘,包括软盘、光盘、CD-ROM、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存、磁卡或光卡、或适合用来存储电子指令的任何种类的介质,各个介质与总线耦合。机器可读介质包括用来以机器(例如计算机)可读形式存储或传输信息的任何装置。例如,机器使用机器可读介质(例如,机器可读存储介质,如磁盘;光盘;随机存取存储器;只读存储器;闪存装置;相变存储器)和机器可读通信介质(例如,电的、光的、声的或其他形式的传播信号——例如载波、红外信号、数字信号等)存储和发送(在内部,或通过网络而向其他装置)代码和数据。本公开的至少某些实施例包括具有与软件应用交互的搜索软件的环境中的一个或多个应用程序接口。各种功能调用或消息经由搜索软件和软件应用之间的应用程序接口被发送。发送功能调用或消息可以包括发布、发起、调用或接收功能调用或消息。示例的应用程序接口发送功能调用以对具有显示区域的装置实现各种操作(例如,搜索、联网、服务发现(service discovery)等)。API可以实现具有参数、变量或指针的函数。API可以以所公开的参数组合或其他参数组合的形式接收参数。除了所公开的API,其他API以可以单独地或组合地执行与所公开的API类似的功能。显示区域可以以窗口的形式呈现。窗口是可以具有、也可以不具有边缘的显示区域,并且可以是显示器的整个显示区域或部分。在某些实施例中,显示区域可以具有至少一个窗口和/或至少一个视图(例如,网页、文本或图像内容)。公开的方法、系统和设备可以通过显示区域、窗口和/或视图来实现。本公开的至少某些实施例可以是诸如数字媒体播放器(例如,便携式音乐和/或视频媒体播放器)的便携式电子装置的一部分,该装置可以包括用于呈现媒体的媒体处理系统、用于存储媒体的存储装置,并可以进一步包括与天线系统和媒体处理系统耦接的射频(RF)收发机(例如,用于蜂窝电话的RF收发机)。在某些实施例中,存储在远程存储装置上的数据可以通过RF收发机发送到便携式电子装置。数据例如可以是音乐或其他音频、静止画面或动画等中的一种或多种。便携式媒体播放器可以包括媒体选择装置,例如,Cupertino, CA的 AppleComputer, Inc.的iPod 或 iPod Nano 媒体播放器上的点击操作轮(click wheel) 装置、触摸屏输入装置、按钮装置、可移动指点装置或其他输入装置。媒体选择装置可以被用来选择存储在存储装置和/或远程存储装置上的媒体。在至少某些实施例中,便携式媒体播放器可以包括显示装置,该显示装置耦接到媒体处理系统以显示媒体的标题或其他指示符,所述媒体是通过输入装置而选择的,并通过扬声器或(一个或多个)耳机、或者在显示装置上、或者既在显示装置又在扬声器或(一个或多个)耳机上呈现的。在某些实施例中,显示装置和输入装置集成为一体,而在另一些实施例中,显示装置和输入装置是分离的
直ο这里描述的发明的实施例可以是其他类型的数据处理系统的一部分,例如,娱乐系统或个人数字助理(PDA)、或通用计算机系统、或专用计算机系统、或另一个装置中的嵌入式装置、或不包括媒体播放器的蜂窝电话、或多功能触摸平板装置、或其他的多功能触摸装置、或将这些装置的多个方面或功能组合的装置(例如,将媒体播放器(例如iPod 便携式媒体播放器)与PDA、娱乐系统和蜂窝电话组合在一个装置中,iPhone )。因为这些装置通常具有多种功能,所以这些装置在下文中也可以称为多功能装置。在本公开中,电子装置和消费者装置是装置类型。在某些实施例中,平台提供各种搜索、服务发现和联网操作。平台包括硬件组件和操作系统。硬件组件可以包括耦接到输入面板的处理单元和耦接到处理器的存储器。操作系统包括存储在存储器中、并被配置为由处理单元执行的一个或多个程序。一个或多个程序包括用于通过应用程序接口(API)而传输功能调用或消息的各种指令,以执行各种搜索、服务发现和联网操作。某些实施例中可以使用一个或多个API。API是由程序代码组件或硬件组件(下文中称为“API实现组件(API-implementing component)”)实现的接口,允许不同的程序代码组件或硬件组件(下文中称为“API调用组件(API-callingcomponent)”)来访问和使用一个或多个函数、方法、过程、数据结构、类和/或由API实现组件提供的其他服务。API 可以定义API调用组件与API实现组件之间传送的一个或多个参数。API允许API调用组件的开发者(可以是第三方应用的开发者)提高(leverage) 由API实现组件提供的专门的特性。可以有一个API调用组件,也可以有多于一个这样的组件。API可以是由计算机系统或程序库提供的源代码接口,用于支持来自应用的服务请求。操作系统(OS)可以具有多个API,以允许运行在OS上的应用调用这些API中的一个或多个,服务(例如程序库)可以具有多个API,以允许使用这些服务的应用调用这些API中的一个或者多个。在建立应用时被解释或编译的程序设计语言方面,API可以是指定的。在某些实施例中,API实现组件可以提供多于一个API,其中每一个都提供由API 实现组件所实现的功能的不同的视图或具有访问该功能不同方面的不同方面。例如,API 实现组件的一个API可以提供第一组函数,并可以被公开给第三方开发者,API实现组件的另一个API可以被隐藏(没有公开)并提供第一组函数的子集以及另一组函数,例如第一组函数以外的测试或调试函数。在另一些实施例中,API实现组件自身可以通过基础的API 调用一个或多个其它的组件,因而既是API调用组件又是API实现组件。
API定义了 API调用组件在访问和使用API实现组件的专用特性时所使用的语言和参数。例如,API调用组件通过被API公开的一个或多个API调用(callsor invocations, 例如通过函数或方法的调用来实现)而访问API实现组件的指定特性,并且经由API调用来使用参数传递数据和控制信息。响应于来自API调用组件的API调用,API实现组件可以通过API返回数值。虽然API定义了 API调用的语法和结果(例如,如何调用API调用和API调用做什么)JfiAPI不能反映API调用如何完成由API调用所指定的功能。各种 API调用经由调用(API调用组件)与API实现组件之间的一个或多个应用程序接口而被发送。发送API调用可以包括发布、发起、调用、接收、返回、或者对函数调用或消息作出响应; 换句话说,发送可以描述由API调用组件或由API实现组件进行的动作。API的函数调用或其他调用可以通过参数列表或其他结构发送或接收一个或多个参数。参数可以是常量、 键值、数据结构、对象、对象类、变量、数据类型、指针、数组、列表、或者指向函数或方法的指针,或对能够通过API而传递的数据或其他项目进行引用的其他方式。而且,数据类型或类可以由API提供并且由API实现组件实现。因而,API调用组件可以声明变量、使用指针、通过使用API中提供的定义来对这些类型或类的常量值进行使用或实例化(instantiate)。通常,API可以被用来访问由API实现组件提供的服务或数据,或发起执行由API 实现组件所提供的操作或计算。例如,API实现组件和API调用组件各自可以是操作系统、 库、设备驱动器、API、应用程序或其他模块(应当理解,API实现组件和API调用组件可以是彼此相同或者不同类型的模块)中的任意一种。在某些情况下,API实现组件可以至少部分地由固件、微代码或其它硬件逻辑来实现。在某些实施例中,API可以允许客户端程序使用由软件开发工具包(SDK)库提供的服务。在另一些实施例中,应用或其他客户程序可以使用由应用基本框架(Application Framework)提供的API。在这些实施例中,应用或客户程序可以将对于由SDK提供的和由API提供的功能或方法的调用相结合,或者使用SDK中定义并由API提供的数据类型或对象。在这些实施例中,应用基础框架可以提供用于程序的主事件循环,以响应由框架定义的各种事件。API允许使用应用基本框架而由应用来指明事件和响应事件。在某些实施例中,API调用可以向应用报告硬件设备的能力或状态,包括与诸如输入能力和状态、输出能力和状态、处理能力、电力状态、存储容量和状态、通信能力等方面有关的能力或状态,API可以部分地通过固件、微代码来实现,或通过部分地在硬件组件上执行的其他低级逻辑来实现。API调用组件可以是本地组件(即与API实现组件在同一数据处理系统上)或者是通过基于网络的API而与API实现组件通信的远程组件(即,在与API实现组件不同的数据处理系统上)。应当了解,API实现组件也可以作为API调用组件(即,它可以对由其他 API实现组件公开的API进行API调用),并且,通过实现对另一 API调用组件公开的API, API调用组件也可以作为API实现组件。API可以允许使用不同程序设计语言编写的多个API调用组件来与API实现组件进行通信(因而API可以包括一些特性,用于对API实现组件和API调用组件之间的调用和返回进行翻译);然而,API可以由专门的程序设计语言来实现。在一个实施例中,API调用组件能够调用来自不同供应商的API,诸如一组来自OS供应商的API、另一组来自插件 (plug-in)供应商的API、以及另一组来自另一个供应商(例如,软件库的供应商)或所述另一组API的创建者的API。图1显示了被用在本发明的某些实施例中的示例性API体系结构的方框图。如图 1所示,API体系结构100包括实现API 120的API实现组件110 (例如,操作系统、库、设备驱动器、API、应用程序、软件或其他模块)。API 120指明了可以被API调用组件130使用的API实现组件的一个或多个函数、方法、类、对象、协议、数据结构、格式和/或其他特性。 API 120能够指明至少一个调用约定(convention),该约定指明了 API实现组件中的函数如何从API调用组件接收参数,以及该函数如何向API调用组件返回结果。API调用组件 130(例如,操作系统、库、设备驱动器、API、应用程序、软件或其他模块)通过API 120进行 API调用,以访问和使用由API 120指明的API实现组件110的特性。API实现组件110可以响应于API调用而通过API 120向API调用组件130返回数值。应当知道,API实现组件110可以包括没有由API 120指明、并对于API调用组件 130而言不可用的另外的函数、方法、类、数据结构和/或其他特性。应当了解,API调用组件130可以与API实现组件110在同一系统上,也可以位于远程并且使用API 120通过网络来访问API实现组件110。虽然图1显示了与API 120交互的单个的API调用组件130, 但应当知道,可以使用与API调用组件130用不同语言(或相同语言)编写的其他API调用组件来使用API 120。API实现组件110、API 120和API调用组件130可以存储在机器可读介质中,所述介质包括用来存储机器(例如,计算机或其他数据处理系统)可读形式的信息的任何装置。例如,机器可读介质包括磁盘、光盘、随机访问存储器、只读存储器、闪存装置等。在图2( “软件栈”)的一种示例性实施例中,应用可以使用几个服务API来调用服务1或2,并使用几个操作系统(OS)API来调用OS。服务A和B可以使用几个OS API来调用OS。注意,服务2有两个API,其中一个(服务2API 1)接收来自应用1的调用并向应用1返回值,另一个(服务2API 2)接收来自应用2的调用并向应用2返回值。服务1(例如可以是软件库)调用OS API 1并从OS API 1接收返回值,服务2(例如可以是软件库) 调用OS API 1和OS API2,并从OS API 1和OS API2接收返回值。应用2调用OS API2并从OS API2接收返回值。图3为根据本发明的一个实施例,运行在多功能装置上的搜索后台程序(search daemon) 320与第三方应用310之间交互的图。本申请中所用的第三方应用泛指由除了多功能装置制造商之外的实体所提供的软件应用。典型地,多功能装置的用户可以安装一个或多个可在多功能装置上执行的第三方应用以执行一组特定的任务或功能。第三方应用的一些例子包括电子书阅读器、社交网络管理器等。总的来说,多功能装置可以在多功能装置上的搜索数据库380中储存由搜索后台程序320所标引(index)的第三方应用310相关联的应用数据。在一个实施例中,装置可以具有多个第三方应用(例如应用310),每个第三方应用以本申请中所述的方式工作,并具有搜索后台程序320或搜索后台程序320的实例(instance),该实例是针对使用该实例的相应的第三方应用而创建的。在某些实施例中,搜索后台程序320可以发起(launch)应用标引器(indexer)330以标引应用数据。特别地,应用标引器330可以发起由第三方应用 310提供的应用搜索包(bundle) 340的实例,以取回(retrieve)应用数据的记录来进行标引。注意,出于安全原因,应用搜索包340是在与其他第三方应用、系统应用和搜索包分开的过程中被发起的。而且,所述分开的过程(应用搜索包340在该过程中被发起)和与应用搜索包340相关联的第三方应用310可以具有相同的特权(privilege)(例如,对于存储器空间的选定部分进行读取和写入、但对存储器的其他部分读取和写入以其他方式受限的特权)。因此,应用搜索包340被赋予了对允许第三方应用310访问的内容进行访问的许可, 并且被禁止访问不允许第三方应用310访问的内容。在某些实施例中,搜索后台程序320 的一些部分(例如应用标引器330)可以被赋予与第三方应用310相同的特权(例如,存储器空间限制)。在某些实施例中,响应于用户请求,搜索后台程序320可以在不发起第三方应用310的情况下,在搜索数据库380中搜索被标引的应用数据。在搜索后台程序320与第三方应用310之间进行交互以标引和搜索应用数据的某些实施例的详情将在下文讨论以便进一步阐明以上概念。在一个实施例中,第三方应用310被发起以在多功能装置上运行。当运行时,第三方应用310使得应用数据315改变。例如,第三方应用310可以修改存储在多功能装置上的已有记录、下载新的记录到多功能装置上、和/或移除(或删除)存储在多功能装置上的已有记录。当第三方应用310改变应用数据315时,第三方应用310还向搜索后台程序320 发送应用数据315中经过改变的记录的标识符(ID)。搜索后台程序320可以在更新列表 325中临时存储经改变后记录的ID。之后,当搜索后台程序320需要建立被标引数据时,搜索后台程序320可以发起单独的过程以运行应用标引器330。搜索后台程序320可以周期性地、或者在请求了搜索时、 或者在其它时间或时间间隔建立被标引数据。可替代地,当搜索后台程序320在更新列表 325中发现新的信息时,搜索后台程序320可以建立被标引数据。这可以在第三方应用310 将更新标识符通知给搜索后台程序320的时候发生。应用310的外部也可以存在可以使标引开始的触发器,例如应用更新、系统恢复、系统更新等。应用标引器330可以装载应用搜索包340。在某些实施例中,应用搜索包340是专用于第三方应用310的、与搜索相关的插件。第三方应用310可能在将第三方应用310安装在多功能装置上时已经提供了应用搜索包340。应用标引器330可以从更新列表325到应用搜索包340提供经改变的记录的ID。 作为响应,应用搜索包340提供经改变的记录到应用标引器330以被标引。可替代地,应用标引器330可以从应用搜索包340请求所有的与第三方应用310相关联的记录。在某一实施例中,用于第三方应用310的应用标引器330的实例在其自己的过程中运行,并具有与第三方应用310相同的特权(对应于存储器控制、存储器空间、存储器分配、文件系统控制和网络控制)。在某些实施例中,如果与用户搜索查询相匹配,则每条记录包括一组属性,描述了相应的记录应当如何在搜索结果中显示。例如,示例性的记录可以包括ID、内容标题、内容子标题和专用于应用的ID (也称为本地ID)。当记录与用户搜索查询相匹配时,记录的标题和子标题可以呈现在用户搜索查询的搜索结果中。使用来自应用搜索包340的记录,应用标引器330可以在搜索数据库380中建立或增加记录,该数据库可以包括与记录相关联的内容的元数据。在某些实施例中,搜索数据库380包括彼此同步的多个数据库。例如,搜索数据库380可以包括用来存储被标引内容的第一数据库和用来存储被标引内容的记录的第二数据库。搜索数据库的一个实施例的更详细内容将在下文讨论。当用户提交用户搜索查询时,搜索后台程序320可以访问搜索数据库380以寻找与用户搜索查询相匹配的记录。注意,搜索后台程序320可以在不发起第三方应用310的情况下,搜索与第三方应用310的应用数据相关联的记录。搜索后台程序320可以呈现与用户搜索查询相匹配的记录的部分,例如,在窗口内的搜索结果区域中显示匹配记录的标题和子标题。在某些实施例中,用户可以从匹配记录中选择记录。响应于用户的选择,搜索后台程序320可以在多功能装置上发起第三方应用310以呈现与选择的记录相关联的内容。例如,内容可以包括视频数据,第三方应用310可以被启动以播放视频;或者,内容可以包括电子书,第三方应用310可以被启动以显示电子书。图4是用于在多功能装置上对第三方应用建立搜索和标引能力的方法的一个实施例的流程图。该方法可以通过硬件、软件、固件或它们的任意组合来执行。在某些实施例中,在方框410,在多功能装置上发起第三方应用的安装。在方框 420,专用于第三方应用的应用搜索包被存储在多功能装置的第三方应用的预定的位置。广义上来说,应用搜索包是第三方应用提供的插件。应用搜索包可以被载入以传输与第三方应用相关联的内容的记录。在方框430,第三方应用的元数据被检查,以确定第三方应用是否想要标引与第三方应用相关联的内容。在方框445,假如第三方应用想要标引内容,则第三方应用被登记。例如,如下文所述,运行在多功能装置上的搜索后台程序可在中心位置保存登记的应用的列表的轨迹,搜索后台程序可以标引与第三方应用相关联的内容。图5是在多功能装置上由第三方应用对应用数据中的变化进行处理的方法的实施例的流程图。该方法可以由硬件、软件、固件或者它们的任意组合来执行。在某些实施例中,在方框510,在多功能装置上运行第三方应用。在方框520,第三方应用改变与第三方应用相关联的应用数据的记录。在方框530,第三方应用向运行在多功能装置上的搜索后台程序发送经改变的记录的标识符(ID)。图6是在多功能装置上由搜索后台程序对与第三方应用相关联的应用数据中的变化进行处理的方法的实施例的流程图。该方法可以由硬件、软件、固件或者它们的任意组合来执行。在方框610,运行在多功能装置上的搜索后台程序接收与第三方应用相关联的应用数据的经改变的记录的ID。在方框620,搜索后台程序将接收到的ID放置到更新列表中。如在下文所述,搜索后台程序可以在此后使用更新列表以确定它是否需要对记录进行标引。图7是在多功能装置上由搜索后台程序标引应用数据的方法的一个实施例的流程图。该方法可以由硬件、软件、固件或它们的任意组合来执行。在方框710,搜索后台程序检查更新列表,以确定是否有任何记录被改变。在某些实施例中,搜索后台程序可以周期性地检查更新列表。假如有记录改变,那么搜索后台程序将需要标引经改变的记录。在方框720,搜索后台程序可以在单独的过程中发起应用标引器以标引经改变的记录。图8是在多功能装置由应用标引器标引应用数据的方法的一个实施例的流程图。 该方法可以由硬件、软件、固件或者它们的任意组合来执行。在方框810,运行在多功能装置上的应用标引器在与其他第三方应用、系统应用和搜索包分开的单独过程中对应用搜索包的实例进行实例化。应用搜索包是安装在多功能装置上第三方应用所专用的插件。在方框820,应用标引器传送经改变的记录的ID给应用搜索包,以从应用搜索包请求经改变的记录。可替代地,应用标引器可以决定对所有与第三方应用相关联的记录进行标引,并从而从应用搜索包请求与第三方应用相关联的所有记录。在方框830,应用标引器从应用搜索包接收所请求的记录。每个记录可以包含与记录相关联的内容的一组属性,例如,内容的标题、内容的子标题和被第三方应用使用的内容的本地标识符。在方框840,应用标引器对所接收的记录进行标引,并在多功能装置的搜索数据库中存储所标引的记录。图9是由搜索后台程序搜索所标引的与第三方应用相关联的应用数据的方法的一种实施例的流程图。该方法可以由硬件、软件、固件或它们的任意的组合来执行。在方框910,搜索后台程序接收用户搜索查询。例如,用户可以提交用户搜索查询以寻找标题具有特定文本字符串(例如“spring”)的记录。在方框920,搜索后台程序对包含有经标引的记录的搜索数据库进行搜索,以搜索与用户搜索查询相匹配的记录。在方框930,搜索后台程序在要呈现给用户的搜索结果中返回与用户搜索查询相匹配的每个记录的标识符。在某些实施例中,标识符包括标题、子标题、对于相关联的第三方应用的引用、本地标识符(专用于第三方应用)和种类。在某些实施例中,搜索框(用户搜索查询被输入该框中)的主人在查询时从搜索后台程序接收搜索结果。用户可以选择来自搜索结果的记录。主人可以是搜索应用或第三方应用。假如主人是执行全局搜索的搜索应用,则搜索应用可以发起第三方应用并且在来自搜索后台程序的本地标识符和种类中传送。如果主人是第三方应用,则它可以简单地呈现与所选择的记录相关联的内容。注意,在主人是第三方应用时,搜索结果中仅与第三方应用有关的记录可以被显示。图10显示了多功能装置上的搜索数据库1000的一个实施例。搜索数据库1000 包括第一数据库1010和第二数据库1020。在另一些实施例中,搜索数据库1000可以包括多于两个数据库。在某些实施例中,第一数据库存储与某些第三方应用相关联的内容(例如,文档、 网页、电子书、视频等)和它们相应的ID。第二数据库1020可以存储内容的记录。在当前的例子中,每一个记录包括内容的ID、内容的标题、内容的子标题和内容的本地ID。本地ID 被第三方应用在访问和处理内容时使用。因此,本地ID也可以被称为应用ID。本地ID的一个实施例的详情被显示在图11中。在搜索数据库1000中的内容通过对记录进行标引用而被组织。运行在多功能装置上的搜索后台程序可对记录进行标引,并响应于如上所述的用户搜索查询而对搜索数据库1000进行搜索。在某些实施例中,搜索数据库1000在多功能装置上存储所有种类(例如,音乐、视频、电子书、播客(podcast)等)的内容。尽管在搜索数据库1000中执行的搜索可能很快, 但搜索数据库1000可能变得太大而难以备份。这样,如果需要,搜索数据库1000就不得不从头开始重建。可替代地,在多功能装置上对于每个种类的内容有一个搜索数据库。例如,第一搜索数据库可以被建立用于音乐,第二搜索数据库可以被建立用于播客,第三搜索数据库可以被建立用于电子书,第四搜索数据库用于第一个第三方应用,第五搜索数据库用于第二个第三方应用等等。通过将不同种类的内容分割为不同搜索数据库,搜索数据库可以取决于每个搜索数据库中内容的稳定度而以不同的频率被备份。内容越稳定,相应的搜索数据库需要备份的频率越低。然而,由于有多个搜索数据库,搜索数据库中内容的搜索会变慢。 为了减轻对性能的影响,可以在多功能装置上实现高速缓存以存储被频繁访问的内容的记录。这样,搜索可以变得更快。图11显示了示例性文件ID的一个实施例。ID 1100包括示例性文档的标题1110、 示例性文档的子标题1120、与示例性文档相关联的第三方应用1130、示例性文档的种类标识符1140和示例性文档的应用专用ID 1150。在某些实施例中,ID 1100仅对第三方应用中的特定种类是唯一的。种类是内容的类型,例如,幻灯片、视频、文档、播客等。因此,应用专用ID 1150对于每一种类是唯一的, 并且每一个种类在第三方应用中是唯一的。在某些实施例中,第三方应用可以与多个种类的内容相关联。例如,第三方应用可以与视频和播客所嵌入到的文件相关联。只要考虑到搜索后台程序,第三方应用可以将这样的文件(例如,文档)放在单个种类下。假如第三方应用希望能够以更精细的间距 (granularity)返回结果,例如恰好返回文件的播客部分,则它可以提供直接指向播客的 ID并在播客种类中对其进行标引。第三方应用可以选择提交这二者中的一者,或者全部两者,以用来标引。搜索后台程序可以不对细分情况下的结果和一体的结果进行区分。在某些实施例中,本公开的方法、系统和设备可以在各种装置中执行,这些装置包括电子装置、消费者装置、数据处理装置、桌上型电脑、便携式电脑、无线装置、蜂窝装置、平板装置、手持装置、多点触摸装置、多点触摸数据处理装置、这些装置的任意组合,或其他类似装置。图12-14显示了这样装置的一些例子。图12显示了根据本公开的一个实施例的装置四50。装置四50可以包括外壳四52、显示/输入装置、扬声器四56、麦克风四58和可选的天线四60 (其在外壳的外部可见或者隐藏在外壳内)。装置四50还可以包括接近度传感器四62和加速度计2964。 装置四50可以是蜂窝电话,或集成了 PDA和蜂窝电话的装置,或集成了媒体播放器和蜂窝电话的装置,或既是娱乐系统(例如用于玩游戏)又是蜂窝电话的装置,装置四50也可以是这里描述的其他种类装置。在一个具体实施例中,装置四50可以包括蜂窝电话、媒体播放器和PDA,它们都被容纳在外壳四52内。装置四50可以具有这样的形状系数其小到足以放在成人的手掌中,并且轻到足以使成人可用一只手拿起。可以理解,术语“便携式”意味着装置能够很容易地拿在成年使用者手(一只或者两只)中,例如,膝上电脑、iPhone 和iPod 都是便携式装置。在本公开的某些实施例中,装置四50可以被用来实现本发明中讨论的至少某些方法。图13显示了无线装置的实施例,该无线装置包括进行无线通信的能力。无线装置 3100可以包括天线系统3101。无线装置3100还可以包括数字和/或模拟的射频(RF)收发机3102,该收发机耦接到天线系统3101,以通过天线系统3101发送和/或接收语音、数
字数据和/或媒体信号。无线装置3100还可以包括数字处理系统3103,以控制数字RF收发机并管理语音、 数字数据和/或媒体信号。数字处理系统3103可以是通用处理装置,例如微处理器或控制器。数字处理系统3103也可以是专用处理装置,例如ASIC(专用集成电路)、FPGA(现场可编程门阵列)或DSP (数字信号处理器)。数字处理系统3103也可以包括本领域已知的其他装置以与无线装置3100的其他组件进行接口。例如,数字处理系统3103可以包括模数和数模转换器以与无线装置3100的其他组件进行接口。数字处理系统3103可以包括媒体处理系统3109,媒体处理系统也可以包括通用或专用处理装置以管理媒体,例如音频数据的文件。无线装置3100也可以包括耦接到数字处理系统的存储装置3104,以存储用于无线装置3100的数据和/或操作程序。存储装置3104也可以是例如任何类型的固态或磁性存储装置。存储装置3104可以是机器可读介质,或者也可以包括机器可读介质。无线装置3100也可以包括耦接到数字处理系统3103的一个或多个输入装置 3105,以接受用户输入(例如,电话号码、姓名、地址、媒体选择等)。输入装置3105也可以是例如键盘、触摸板、触摸屏、与显示装置相结合的指点装置、或类似输入装置中的一种或几种。无线装置3100还可以包括耦接到数字处理系统3103的至少一个显示装置3106, 以显示信息(例如消息、电话呼叫信息、联系人信息、图片、电影和/或标题),或通过输入装置3105而选择的媒体的其他指示符。例如,显示装置3106可以是IXD显示装置。在一个实施例中,显示装置3106和输入装置3105可以集成在相同的装置中(例如触摸屏IXD,诸如与显示装置(例如LCD显示装置)集成的多点触摸输入板)。显示装置3106可以包括背光3106A以在某些情况下照亮显示装置3106。可以理解,无线装置3100可以包括多个显示
ο无线装置3100还可以包括电池3107以向系统组件提供工作电力,这些组件包括数字RF收发机3102、数字处理系统3103、存储装置3104、输入装置3105、麦克风3105A、音频换能器3108、媒体处理系统3109、(一个或多个)传感器3110和显示装置3106。例如, 电池3107可以是可再充电或不可再充电的锂或镍金属氢化物电池。无线装置3100也可以包括音频换能器3108,其可以包括一个或多个扬声器和至少一个麦克风3105A。在本发明的某些实施例中,无线装置3100可以被用来实现在本公开中讨论的至少部分方法。图14显示了根据本发明的一个实施例的装置的另一个例子。该装置3200可以包括诸如微处理器3202的处理器和存储器3204,它们通过总线3206相互耦接。装置3200可以可选地包括耦接到微处理器3202上的缓存3208。该装置可以可选地包括存储装置3240, 该存储装置可以是例如任何类型的固态或磁性存储装置。存储装置3240可以是机器可读介质,也可以包括机器可读介质。该装置还可以可选地包括显示控制器和显示装置3210,该显示装置通过总线 3206耦接到其他组件。一个或者多个输入/输出控制器3212也可以耦接到总线3206,以给输入/输出装置3214提供接口并给用来感知用户活动的一个或多个传感器3216提供接口。总线3206可以包括通过本领域公知的各种桥、控制器和/或适配器来相互连接的一个或多个总线。输入/输出装置3214可以包括辅助键区(keypad)、键盘或诸如触摸输入板的光标控制装置。而且,输入/输出装置3214也可以包括网络接口,该接口可以用于有线网络或者用于无线网络(诸如RF收发机)。传感器3216可以是这里描述的传感器的任意一种,例如包括接近度传感器或环境光传感器。在装置3200的至少某些实现方式中,微处理器3202可以接收来自一个或多个传感器3216的数据,并可以用这里描述的方式执行这些数据的分析。在本发明的某些实施例中,装置3200可以被用来实现本发明中讨论的至少某些方法。在上述说明书中,已经参考其具体的示例性实施例描述了本发明。显然,在不脱离所附权利要求的更广精神和范围的情况下,可以对其作出各种改变。因而,说明书和附图应当认为是示例性的,而不是限定性的。
权利要求
1.一种具有应用程序接口(API)的数据处理系统,所述应用程序接口允许由API实现组件执行操作,所述系统包括用于发起应用标引器的装置,所述应用标引器在下述过程中运行所述过程具有与可在处理器上执行的第三方应用的特权相同的特权,其中,该过程与可在所述处理器上执行的其他第三方应用所涉及的其他过程是分开的;用于由所述应用标引器对专用于所述第三方应用的应用搜索包的实例进行实例化的装置,其中,所述应用标引器对来自所述应用搜索包的实例的记录进行标引,以把经过标引的记录存储在搜索数据库中。
2.如权利要求1所述的系统,其中,应用搜索包指明对所述记录进行标引所用的一组记录属性,所述其他过程包括所述其他第三方应用的搜索过程和标引过程,专用于所述第三方应用的应用搜索包的所述实例被限制在与所述第三方应用相同的存储器特权。
3.如权利要求1所述的系统,还包括用于在更新列表中向所述应用搜索包传送与所述记录相关联的标识以请求所述记录的装置,其中,所述标识已在所述第三方应用改变所述记录时被增加到所述更新列表。
4.一种计算机实现的方法,包括标引与被安装在下述装置上的第三方应用相关联的记录该装置使用专用于所述第三方应用的搜索插件,其中,用于标引所述记录的过程与安装在所述装置上的其他第三方应用被隔离开;和响应于用户搜索查询,使用被标引的记录来搜索内容。
5.如权利要求4所述的方法,还包括经由图形用户接口呈现与所述用户搜索查询相匹配的记录;和允许用户经由所述图形用户接口从与所述用户搜索查询相匹配的记录中选择记录,其中,所述搜索插件被限制为与所述第三方应用相同的存储器特权。
6.如权利要求5所述的方法,还包括响应于所述用户选择所述记录,发起所述第三方应用以呈现所述记录。
7.如权利要求5所述的方法,其中,呈现与所述用户搜索查询相匹配的记录的步骤包括在所述图形用户接口上显示所述记录的一组属性,其中,这组属性由专用于所述第三方应用的搜索插件指明。
8.一种计算机实现的方法,包括在计算装置上安装第三方应用;检查所述第三方应用的元数据,以确定所述第三方应用是否想要标弓I与所述第三方应用相关联的内容;以及如果所述第三方应用想要标引与所述第三方应用相关联的内容,则登记所述第三方应用。
9.如权利要求8所述方法,还包括响应于用户请求而发起所述第三方应用,其中,所述第三方应用改变记录并把被改变的记录的标识发送到所述计算装置上运行的搜索后台程序以存储在更新列表中,所述更新列表可由所述搜索后台程序使用以标引经改变的记录。
10.如权利要求9所述的方法,还包括在单独的过程中调用专用于所述第三方应用的搜索插件,以向所述搜索后台程序传送所述经改变的记录的一组属性来进行标引。
11.如权利要求10所述的方法,其中,在所述第三方应用被终止后,所述搜索插件被调用。
12.如权利要求10所述的方法,还包括向所述单独的过程提供与授予所述第三方应用的特权相同的特权。
13.一种计算机实现的方法,包括由可在数据处理装置上执行的第三方应用指明下述记录的一组属性当所述记录成为由搜索后台程序响应于用户搜索查询而执行的搜索的搜索结果的一部分时,所述记录被呈现;和在不发起所述第三方应用的情况下,所述第三方应用提供专用于所述第三方应用的应用搜索包,以向由所述搜索后台程序实例化的搜索标引器传送记录来进行标引。
14.如权利要求13所述的方法,还包括所述第三方应用改变与所述第三方应用相关联的内容的记录;在可由所述搜索标引器访问的列表中存储被改变的那些记录的标识符。
15.如权利要求14所述的方法,其中,所述搜索标引器在所述第三方应用已经终止之后从所述列表中取回所述标识符,并且使用所述标识符以从所述应用搜索包获得经改变的记录。
16.一种设备,包括用于应用标引器的装置,所述应用标引器可在数据处理装置上执行,并在下述过程中运行所述过程具有与可在所述数据处理装置上执行的所述第三方应用的特权相同的特权,其中,所述过程与可在所述数据处理装置上执行的其他第三方应用所涉及的其他过程是分开的;和用于搜索数据库的装置,所述搜索数据库被存储在与所述数据处理装置耦接的数据存储装置上,其中,所述应用标引器能够对专用于所述第三方应用的应用搜索包的实例进行实例化,并对来自所述应用搜索包的实例的记录进行标引以把被标引的记录存储在所述搜索数据库中。
17.如权利要求16所述的设备,其中,应用搜索包指明用来对记录进行标引的一组记录属性,并且,另一个应用标引器可在所述数据处理系统上在另一个过程中执行,所述另一个过程具有与可在所述数据处理系统上执行的另一个第三方应用的特权相同的特权。
18.如权利要求17所述的设备,其中,所述应用标引器能够在更新列表中向所述应用搜索包传送与所述记录相关联的标识符以请求所述记录,其中,所述标识符已在所述第三方应用改变所述记录时被增加到所述列表中。
19.如权利要求16所述的设备,还包括显示装置,用于显示图形用户接口以接收来自用户的搜索查询;和用于提供搜索后台程序的装置,所述搜索后台程序可在所述数据处理装置上执行,以在不调用所述第三方应用的情况下在所述搜索数据库中对被标引的记录进行搜索,来搜索与所述搜索查询相匹配的那些记录。
20.如权利要求19所述的设备,其中,所述图形用户接口呈现与所述搜索查询相匹配的记录,并允许用户从与所述搜索查询相匹配的记录中选择记录,并且,响应于所述用户选择记录,所述数据处理装置能够发起所述第三方应用以呈现由用户所选择的记录。
全文摘要
本发明涉及向第三方应用的搜索扩展能力,其中的至少某些实施例包括用来将搜索能力扩展到安装在装置上的第三方应用的方法。在一个实施例中,在与安装在使用专用于第三方应用的搜索插件的装置的其他第三方应用分开的过程中,对与第三方应用相关联的记录进行标引。而且,响应于用户搜索,能够在不调用第三方应用的情况下,对被标引的记录进行搜索。
文档编号G06F9/44GK102214093SQ201010553619
公开日2011年10月12日 申请日期2010年9月25日 优先权日2010年4月7日
发明者大卫·拉哈特贾, 戈登·J·弗里德曼, 本杰明·S·菲利普斯, 爱德华·T·施密特 申请人:苹果公司