掌桥专利:专业的专利平台
掌桥专利
首页

使用远程系统更新的设备端功能

文献发布时间:2023-06-19 19:38:38


使用远程系统更新的设备端功能

相关申请的交叉引用

本申请要求于2020年8月17日提交的美国临时申请第63/066,576号;2020年8月20日提交的美国临时申请第63/068,118号;以及2021年3月16日提交的美国临时申请第63/161,541号的权益。上述每项申请的公开内容通过引用全部并入本文中。

技术领域

本公开内容涉及为应用提供搜索结果、广告和其他功能。

背景技术

软件开发者可以开发被用户在各种不同平台(例如,不同的计算设备和操作系统)上访问的网站和应用。示例的网站/应用可以包括电子商务应用、流媒体应用、商业评论应用、社交媒体应用和新闻应用。网站和应用搜索引擎可以为用户搜索网站和应用。例如,用户可以在搜索引擎中输入搜索查询,并在搜索引擎结果页(search engine results page,SERP)中接收该搜索查询的网站和应用搜索结果。广告商(例如,应用开发者和其他商业实体)可以在各种不同的计算平台上的SERP中广告他们的应用/网站、服务和其他产品。为了有效地广告他们的应用/网站、服务和其他产品,广告商可以向目标受众广告。

发明内容

在一个示例中,用户设备包括存储器和处理单元。该存储器被配置成存储包括初始搜索记录和初始搜索功能的本地服务模块应用。每个初始搜索记录包括打开应用页面的应用链接。每个初始搜索记录包括描述与初始搜索记录相关联的应用页面的搜索数据。初始搜索功能被配置成从初始搜索记录中进行选择。处理单元被配置成执行本地服务模块应用。执行本地服务模块应用使处理单元向远程系统请求搜索更新数据并从远程系统接收搜索更新数据,其中,搜索更新数据包括更新的搜索记录和用于选择更新的搜索记录的更新的搜索功能。执行本地服务模块应用使处理单元分别使用更新的搜索记录和更新的搜索功能来更新初始搜索记录和初始搜索功能。此外,处理单元被配置成从安装在用户设备上的请求应用接收搜索查询,根据更新的搜索功能,基于搜索查询选择更新的搜索记录集,并向请求应用提供搜索响应。该搜索响应包括来自所选择的更新的搜索记录集的应用链接。

在一个示例中,非暂态计算机可读介质包括计算机可执行指令,该计算机可执行指令使用户设备的处理单元存储初始搜索记录和初始搜索功能。每个初始搜索记录包括打开应用页面的应用链接。每个初始搜索记录包括描述与初始搜索记录相关联的应用页面的搜索数据。初始搜索功能被配置成从初始搜索记录中进行选择。处理单元被配置成向远程系统请求搜索更新数据并从远程系统接收搜索更新数据。该搜索更新数据包括更新的搜索记录和用于选择更新的搜索记录的更新的搜索功能。处理单元被配置成分别使用更新的搜索记录和更新的搜索功能来更新初始搜索记录和初始搜索功能。处理单元被配置成从安装在用户设备上的请求应用接收搜索查询;根据更新的搜索功能,基于搜索查询选择更新的搜索记录集;以及向请求应用提供搜索响应。该搜索响应包括来自所选择的更新的搜索记录集的应用链接。

附图说明

根据具体实施方式和附图,本公开内容将被更加充分地理解。

图1示出了包括执行本公开内容的本地服务模块的用户设备的环境。

图2A至图2B示出了本地服务模块的示例实现方式。

图3示出了描述本地服务模块的获取、操作和更新的示例方法。

图4A至图4B示出了提供本地设备端搜索功能的本地服务模块的示例实现方式。

图5示出了描述提供本地设备端搜索功能的本地服务模块的操作的示例方法。

图6示出了示例搜索记录。

图7示出了描述包括提供设备端搜索功能的本地服务模块的启动器应用的操作的示例方法。

图8A至图8B示出了提供本地设备端广告功能的本地服务模块的示例实现方式。

图9示出了描述提供本地设备端广告功能的本地服务模块的操作的示例方法。

图10示出了示例广告记录。

图11示出了描述提供本地设备端广告功能的本地服务模块的操作的示例方法。

图12示出了描述提供本地设备端搜索和广告功能的本地服务模块的操作的示例方法。

图13示出了包括提供本地搜索功能、广告功能和附加功能的本地服务模块的示例启动器应用。

图14示出了向本地服务模块提供更新的示例远程服务系统。

图15是用于本地服务模块的示例架构的功能框图。

图16至图17示出了可以由包括本地服务模块的应用生成的示例图形用户界面(graphical user interface,GUI)。

图18示出了与实现本地服务模块的用户设备组通信的示例远程服务系统。

在附图中,可以重复使用附图标记来标识类似和/或相同的元素。

具体实施方式

图1示出了包括执行本公开内容的本地服务模块102-1的用户设备100(例如,智能手机)的环境。在本文中示出和描述了多个示例本地服务模块。本地服务模块可以被编号为102-1、102-2、…、102-9,并且在本文中一般被称为本地服务模块102。本地服务模块102可以为用户设备100提供一个或更多个本地功能。例如,本地服务模块102可以为安装在用户设备100上的应用提供搜索功能、广告功能和其他功能。本地服务模块102可以包括多个模块,这些模块提供本文中归属于本地服务模块102的各种功能。

在一些实现方式中,本地服务模块102可以为应用提供搜索功能(例如,参见图4A至图7)。在一些实现方式中,本地服务模块102可以为应用提供广告功能(例如,参见图8A至图12)。在一些实现方式中,本地服务模块102可以提供本文描述的功能的组合,例如搜索功能以及搜索广告功能(例如,参见图13)。本文中描述的附加的本地服务模块功能可以包括但不限于应用意图结果、快捷方式结果、零状态功能(例如,零状态链接和/或查询提示)以及自动建议。

本地服务模块102可以使用本地数据104-1(一般被称为“本地数据104”)来提供本地功能。本地数据104可以包括各种类型的数据,这可以取决于由本地服务模块102提供的功能的类型。例如,本地数据104可以包括用于搜索的本地数据,例如,已安装应用的列表、本地搜索索引和/或指示用户设备100上的应用使用的数据。作为另一个示例,本地数据104可以包括用于广告的数据,例如,本地广告内容、广告定向参数和/或应用安装/使用数据。在一些实现方式中,本地数据104可以包括指示用户如何与本地服务模块102和/或其他应用互动的使用数据(例如,搜索/广告互动历史)。

在一些实现方式中,本地数据104可以包括用户设备100上的原始数据(例如,所安装应用的列表)。在一些实现方式中,本地数据104可以包括处理数据(例如,基于包括在用户设备100上的原始数据计算的数据)。例如,本地服务模块102可以获取存储在用户设备上的联系人列表,并生成联系人的缩写列表,以便在本地搜索期间用于匹配。作为另一个示例,本地服务模块102可以获取用户设备100上安装的应用的列表,并生成与应用相关联的缩写/首字母缩写的列表,以便在本地搜索期间用于匹配。在一些实现方式中,本地数据104可以包括从远程服务系统106-1(通常被称为“远程服务系统106”)接收并缓存在本地数据中的数据,例如本文中所述的更新的搜索/广告数据。

本地服务模块的功能可以是可更新/可重新配置的。例如,本地服务模块102可以更新与不同功能相关联的算法和数据。在一个示例中,搜索算法(例如,评分/选择算法)和/或搜索数据(例如,搜索索引)可以被更新。在另一个示例中,广告算法(例如,评分/选择算法)和/或广告数据(例如,ad内容)可以被更新。本地服务模块102可以包括更新模块108-1(一般称为“更新模块108”),其获取对本地服务模块功能的更新。更新模块108可以从远程服务系统106获得更新。

在一些实现方式中,远程服务系统106还可以为本地服务模块102提供附加的远程特征/功能。例如,远程服务系统106可以为本地服务模块102提供搜索/广告特征。远程服务系统106在本文中可以根据由远程服务系统106提供的更新和/或功能而被提及。例如,关于图1和图4A至图4B,提供搜索数据更新和/或搜索功能的远程服务系统在本文中可以被称为“远程搜索系统110”或“搜索系统110”。作为另一个示例,关于图1和图8A至图8B,提供广告数据更新和/或功能的远程服务系统在本文中可以被称为“远程广告系统112”或“广告系统112”。尽管可以实现提供不同功能和更新的多个远程服务系统,但在一些情况下,远程服务系统可以在本文中被描述为提供多个不同功能的单个“远程服务系统”。

在一些实现方式中,本地服务模块102可以获取本地数据,例如用户与本地服务模块102和/或用户设备上的一个或更多个应用114的互动事件。示例互动可以包括搜索互动(例如,搜索查询、结果选择等)、广告互动(例如,广告选择)、启动器互动(例如,GUI互动)和/或其他web/应用互动(例如,应用安装/打开)。本地服务模块102可以使用获得的数据来提供本地功能(例如,个性化的搜索结果和/或广告)。在一些实现方式中,本地服务模块102可以将获得的数据发送至远程服务系统106。远程服务系统106可以基于从一个或更多个用户获得的数据提供远程功能(例如,搜索结果和/或广告)。在一些实现方式中,远程服务系统106可以基于用户/聚合的获取的数据向本地服务模块102提供更新数据。

用户设备100可以包括操作系统116和安装的应用114,例如启动器应用、web浏览器应用、搜索应用和/或附加应用。本地服务模块102可以向用户设备100上的一个或更多个应用114提供各种功能。例如,一个或更多个应用可以充当中间应用,本地服务模块102可以经由该中间应用向用户提供功能。

本地服务模块102可以以各种方式在用户设备100上实现。在一些实现方式中,本地服务模块可以作为向其他应用提供服务(例如,搜索/广告)的独立应用来执行(例如,参见图2A)。例如,本地服务模块可以作为用户设备上的后台服务(例如,被称为后台服务、后台过程或后台程序)来执行。在这个示例中,用户设备上的应用可以访问由本地服务模块提供的功能。此外,在这个示例中,本地服务模块一般可以不为用户提供独立的图形用户界面。相反,在这个示例中,访问本地服务模块功能的应用可以提供用于用户互动的GUI。

在一些实现方式中,本地服务模块102可以被集成到用户设备100上的一个或更多个应用中。例如,在一些实现方式中,启动器应用可以包括本地服务模块(例如,参见图4B)。在这个示例中,启动器应用可以提供访问本地服务模块的用户界面和其他GUI元素,例如启动器搜索页面、启动器搜索栏(例如,搜索查询输入框)、启动器广告空间(例如,一个或更多个广告链接空间)和/或一个或更多个手势。虽然本地服务模块在本文中被示出和描述为被集成到启动器应用中(例如,参见图4B),但本地服务模块可以被集成到其他应用中。在一个具体的示例中,本地服务模块可以被集成到新闻应用中。在这个具体示例中,本地服务模块可以为新闻应用提供搜索功能。在另一个示例中,本地服务模块可以被包括在搜索应用中,该搜索应用搜索一个或更多个数字分发平台118上可用的应用。注意,包括本地服务模块的应用可以包括除本地服务模块之外的其自身的应用功能(例如,在图2B和图4B中被示出为附加的app功能模块)。

包括本地服务模块102的应用可以以各种方式在用户设备100上实现。在一些实现方式中,用户可以下载应用(例如,从数字分发平台118)并在用户设备100上安装该应用。在其他实现方式中,应用可以在用户购买用户设备之前被安装在用户设备上(例如,作为预加载的应用)。在一些情况下,应用可以被称为“本机应用”或“小部件”。

本地服务模块102可以在用户购买用户设备之前由各方集成。例如,设备制造商、手机服务提供方/运营商或其他企业可以在将用户设备卖给用户之前将应用加载到用户设备上。在一些实现方式中,本地服务模块可以由运营商(例如,手机运营商)在用户设备连接至运营商网络时安装。在一些实现方式中,本地服务模块可以被提供至软件开发者,以便集成到随后被交给一方(例如,设备制造商、手机服务提供方等)的应用中,以便在用户购买或首次激活用户设备之前或作为其一部分集成到用户设备中。在一些实现方式中,本地服务模块可以被提供至软件开发者以集成到应用中,然后该应用被提供以供从一个或更多个数字分发平台118下载。在某些情况下,本地服务模块的开发者可以将本地服务模块集成到其自身的应用(例如,其自身的启动器应用)中,然后将该应用提供至设备制造商、手机服务提供方/运营商和/或其他各方,以便集成到用户设备中。在其他情况下,本地服务模块的开发者可以将本地服务模块集成到其自身的应用中,并且随后提供该应用以供从一个或更多个数字分发平台118下载。

应用/系统可以包括与本地服务模块通信的接口模块(例如,参见图2A的I/F模块202)。在一些实现方式中,本地服务模块的开发者可以开发接口模块并将接口模块提供至其他应用开发者以进行集成(例如,集成到启动器应用或其他应用中)。本地服务模块、其他安装应用和/或远程系统之间的示例通信技术可以包括但不限于API调用、进程间通信、同一设备上的本地网络调用、共享本地存储装置/内存和/或其他通信技术。

由本地服务模块和/或与本地服务模块接口的应用提供的功能的范围可以是可配置的。例如,本地服务模块可以被配置成提供本文中所述的功能(例如,搜索、广告、零状态和/或其他功能)的任何组合。同样,应用开发者可以配置他们的应用UI或其他功能,以以各种方式与本地服务模块接口。在一些实现方式中,更新捆绑包也可以包括对接口模块的更新,或改变配置的指令。附加地或替选地,应用开发者可以将接口模块与本地服务模块分开更新。在一些实现方式中,本地服务模块可以在部署后改变功能。例如,一方可以在仅激活搜索的情况下部署本地服务模块,然后在稍后的时间激活其他功能(例如广告、零状态等)。

在一些实现方式中,本地服务模块可以使用本地请求和本地响应通信技术与应用通信。例如,应用可以向本地服务模块发送请求数据结构。响应于接收到的请求数据结构,本地服务模块可以执行功能,然后提供对该请求的本地响应。在某些情况下,生成请求的应用在本文中可以被称为“请求应用”。本文中的请求/响应的命名也可以取决于从本地服务模块请求的功能的类型。例如,正在请求搜索结果的应用可以生成搜索请求数据结构(即“搜索请求”)并接收搜索响应数据结构(即“搜索响应”)。作为另一个示例,正在请求广告的应用可以生成广告请求数据结构(即“广告请求”)并接收广告响应数据结构(即“广告响应”)。本文中的本地服务模块的命名也可以取决于本地服务模块所提供的功能类型。例如,提供搜索功能或广告功能的本地服务模块可以分别被称为“本地搜索服务器”或“本地广告服务器”。

用户设备可以包括本文中所述的本地服务模块的一个或更多个实现方式。例如,单个用户设备可以包括作为后台服务的一个或更多个本地服务模块和/或包括在一个或更多个附加应用中的一个或更多个本地服务模块。

图2A至图2B示出了本地服务模块102的示例实现方式。在图2A中,本地服务模块102-2用作给一个或更多个应用200的服务。应用1 200-1包括接口模块202和为应用1提供应用功能的其他模块204。在图2A中,应用200可以向本地服务模块102-2提出请求并从本地服务模块102-2接收响应(例如,经由接口模块202)。

在图2B中,本地服务模块102-3被集成到应用1 206-1中。应用1 206-1还包括提供与应用1 206-1相关联的功能的附加模块208,例如UI模块和由应用1 206-1提供的其他功能。例如,如果应用1 206-1是新闻应用,则应用1模块可以获取并向用户显示新闻文章。在这个示例中,本地服务模块102-3可以提供附加的功能,例如执行新闻文章的搜索和/或提供新闻应用的广告。虽然没有示出,但应用1 206-1还可以包括接口模块,该接口模块提供本地服务模块102-3与其他应用1模块208之间的通信。图2B中的应用1模块208与本地服务模块102-3之间的通信在一些示例中也可以被表征为本地请求/响应通信。

在一些实现方式中,相对于用户设备上的其他应用,本地服务模块可以被提供特殊权限。例如,可以向本地服务模块提供特殊许可和对通常不被其他应用访问的本地数据的访问。在原始设备制造商(original equipment manufacturer,OEM)或其他方(例如,OS开发者)已经将本地服务模块集成到OS中和/或本地服务模块是在用户设备首次出售给用户时与OS一起出现的OEM交付的产品的一部分的情况下,本地服务模块可以被提供特殊的权限/许可。

图3示出了描述本地服务模块102的获取、操作和更新的示例方法。在框300中,用户设备获取初始本地服务模块。本地服务模块可以实现为一个或更多个应用的独立服务和/或包括在应用中。如本文中所述,初始本地服务模块可以由设备制造商或其他方以多种不同方式包括在用户设备上。初始本地服务模块可以指在从远程服务系统106接收任何更新之前由开发者提供的本地服务模块的初始版本。初始本地服务模块可以包括初始配置参数和数据,例如初始搜索/广告算法(例如,初始评分/选择功能)和/或初始搜索/广告数据(例如,初始搜索/广告记录)。

在框302中,用户设备使用包括在初始本地服务模块版本中的初始配置参数和数据来操作本地服务模块102。在框304中,本地服务模块102接收更新,该更新可以包括更新的功能(例如,算法)和/或更新的数据。例如,更新模块108可能已经请求更新数据(例如,搜索更新数据和/或广告更新数据)。在框306中,用户设备可以操作经更新数据修改的本地服务模块102。

在框308中,本地服务模块102可以确定更新是否正常运行。如果更新没有正常运行,则在框310中,本地服务模块102可以回退到使用初始配置/数据(例如,算法和数据)或在随着时间的推移已经接收到多个先前的更新的情况下使用先前获得的运行的更新(例如,稳定版本)。在框312中,本地服务模块102(例如,更新模块108)可以确定是否要获取更新。如本文中所述,在一些实现方式中,远程服务系统106可以向用户设备推送更新。

如关于块308至块310所描述的,本地服务模块102可以确定更新(例如,算法/数据)是否正常运行。本地服务模块102可以以各种方式确定更新没有正常运行,例如:1)检测到异常(例如,硬件/软件异常、算法错误、SQL错误等),2)检测到超时(例如,网络超时或其他超时),和/或3)确定没有生成结果或生成结果不佳。在一些实现方式中,本地服务模块102可以响应于故障而开始使用较早的更新。在一些实现方式中,本地服务模块102可以被配置成确定本地服务模块102在等待待返回的结果时没有正常运行。在这些实现方式中,本地服务模块可以在等待结果时加载先前的稳定更新。此外,本地服务模块可以使用先前的稳定更新执行先前的功能,以便本地服务模块可以即时向用户提供结果,假设在新加载的更新完成提供结果之前,可能发生故障的更新没有返回结果。退回到先前的稳定更新上可以通过减少对当前可能发生故障的更新返回结果的等待时间来提供正面的用户体验。

如本文中所述,本地服务模块可以包括一些定义的软件组件,例如在安装本地服务模块或包括本地服务模块的其他应用期间定义的软件组件。如本文中进一步描述的,包括在本地服务模块中的一些模块(例如,搜索和广告模块)除了定义的软件组件之外,还可以具有可配置/可修改的功能。可配置/可修改的功能可以由接收到的更新数据(例如,更新捆绑包)随时间而更新。可配置功能还可以包括可配置/可修改数据,例如分别用于生成搜索结果和广告结果的搜索数据和广告数据。

可以被更新的示例可配置功能/数据可以包括搜索结果选择/评分算法、搜索记录数据、广告选择算法(例如,广告选择/评分函数)和广告记录数据。本地服务模块可以接收不同类型的更新。在某些情况下,本地服务模块可以更新算法(例如,搜索/广告算法)而不更新数据(例如,搜索/ad记录)。在其他情况下,本地服务模块可以更新数据而不更新算法。在其他情况下,本地服务模块可以更新算法和数据二者。在一些实现方式中,更新可以启用和/或禁用功能,例如搜索/广告选择算法、UI组件和/或本文中所述的其他功能。

对已安装的本地服务模块功能的更新,例如对搜索和广告功能的更新,可能与对其他应用的更新不同。如果本地服务模块作为独立的应用(例如,服务)被安装,则对本地服务模块功能(例如,搜索/广告)的更新可能不同于对本地服务模块的完整更新。例如,完整的更新(例如,本地服务模块的重新安装)可以包括更新本地服务模块或包括本地服务模块的应用的所定义的软件组件,而对本地服务模块的某些功能的更新可以包括对与本地服务模块相关联的可配置数据的更新。更新与本地服务模块相关联的可配置功能(例如,算法)和数据可以在本地服务模块在用户设备上运行(例如,正在执行)时发生。此外,当本地服务模块在用户设备上运行时,可以发生退回到本地服务模块的先前配置上的情况。

在一些实现方式中,对典型应用(例如,启动器应用)的更新可能需要重新启动该应用和/或重新启动用户设备。对本地服务模块功能的更新可能不要求重新启动本地服务模块或包括本地服务模块的应用。在一些实现方式中,本地服务模块和/或包括本地服务模块的应用在接收到的更新捆绑包之前和之后可能具有相同的定义的软件组件,因为定义的软件组件可能没有被本地服务模块更新修改/重新写入。在这些实现方式中,本地服务模块和/或应用在更新后可能是同一版本的应用,而本地服务模块可能正在执行可配置数据的更新版本。

本地服务模块可以比包括本地服务模块的应用更频繁地更新。例如,如果本地服务模块被包括在由设备制造商或其他方在购买用户设备之前提供的启动器应用中,则启动器应用在更新之前可能会经受更长的服务周期。例如,启动器应用可能需要数周或数月来更新,而本地服务模块(例如,包括在启动器应用中)可能以大得多的速率接收更新(例如,每单个启动器更新有多个连续的本地服务模块更新)。启动器应用与本地服务模块之间的这样的异步更新周期差异可以允许本地服务模块开发者向用户提供最新的功能(例如,搜索/广告功能),而不依赖于常规启动器应用更新。在一些情况下,本地服务模块功能的较短的更新周期可以允许本地服务模块提供方更频繁地更新/调整算法和数据,以提供更好的用户体验。

在一些实现方式中,本地服务模块可以由与开发和支持包括本地服务模块的应用的一方不同的一方来开发和支持。例如,启动器应用可以由第一方开发,而本地服务模块由第二方开发和支持。第一方和第二方可以操作不同的服务器,这些不同的服务器为其各自的应用/模块提供更新。例如,本地服务模块功能可以由不同于启动器开发者的一方更新。

本公开内容的本地服务模块102可以提供即时和相关的结果(例如,搜索结果和广告)。此外,本地用户数据(例如,应用安装/使用数据)可以被用于增强结果的个性化和相关性。使用本地用户数据来增强个性化和相关性也可以保持用户的隐私,因为本地数据可以在用户设备上保持。

由于操作的本地性质,本地服务模块102还可以以可靠的方式提供结果。例如,本地服务模块可以提供结果,而不管因特网连接状态如何。尽管本地服务模块可以在本地提供结果,但在一些实现方式中,本地服务模块可以从远程服务系统106检索结果,这可以增强提供至用户的功能和/或内容。

图4A至图7示出了包括搜索功能的本地服务模块的示例实现方式。图8A至图12示出了包括广告功能的本地服务模块的示例实现方式。图13示出了包括可以提供搜索功能、广告功能和附加功能(例如,快捷方式、零状态等)的本地服务模块的启动器应用。图14至图15示出了远程服务系统和本地服务模块的示例实现方式。图16至图17示出了用于查询提示和自动建议功能的示例GUI。图18示出了如下示例环境,其中一个或更多个远程服务系统更新多个不同的设备组,这些设备组可以执行类似/不同的本地服务模块。

参照图1,示例环境包括多个用户设备100,其通过网络120(例如,因特网)与一个或更多个远程服务系统106(例如,一个或更多个服务器计算设备)通信。网络120可以包括局域网(local area network,LAN)、广域网(wide area network,WAN)和/或因特网。示例用户设备100可以包括但不限于智能手机、笔记本电脑、平板电脑、台式机和可穿戴计算设备。其他示例用户设备可以包括智能助理设备(例如,智能扬声器设备)和电器。示例智能扬声器设备可以包括但不限于亚马逊公司的AMAZON

环境包括一个或更多个数字分发平台118。数字分发平台可以代表被配置成向用户设备分发应用的计算系统。示例数字分发平台包括但不限于谷歌公司的GOOGLE

环境包括在本地服务模块102和远程服务系统106提供广告功能的实现方式中可以与用户设备100和/或远程服务系统106通信的广告商设备122。例如,广告商可以使用广告商设备122来向用户设备100(例如,本地服务模块)和/或远程服务系统106提供广告数据。该环境还可以包括广告(ad)网络124,该广告(ad)网络124可以向用户设备100和/或远程服务系统106提供广告(例如,由广告商设备122产生的)。例如,如本文中所述,广告商设备122和ad网络124可以向广告系统112提供广告数据,然后该广告系统可以向用户设备100提供广告数据。

该环境包括一个或更多个数据提供方126。数据提供方126可以代表向远程服务系统106或由其他方操作的其他系统(例如,其他搜索系统和广告系统)提供事件数据(“外部事件数据”)的计算系统。在一些实现方式中,数据提供方126可以是提供数据管理和分析服务的企业。数据提供方可以收集关于用户如何使用远程服务系统106(例如,搜索/广告系统110、112)、应用和/或网站的数据。数据提供方系统126、远程服务系统106和数字分发平台118可以由一方或更多方(例如,一个或更多个企业)操作。

环境可以包括可以代表与安装在用户设备100上的应用相关联的远程功能的特定于应用的服务器128。例如,Yelp应用可以访问特定于Yelp的服务器,以便为Yelp应用提供一些功能。在一些情况下,特定于应用的服务器128可以向安装在用户设备上的应用提供数据。在某些情况下,特定于应用的服务器128可以获得指示用户设备上特定应用内的用户行为的孤立用户数据。

图4A至图4B示出了提供本地设备端搜索功能的本地服务模块的示例实现方式。本地搜索功能可以基于用户设备上本地存储的数据提供搜索结果。例如,本地搜索功能可以基于输入的用户搜索查询或其他输入提供搜索结果。图4A至图4B还包括远程服务系统(例如,搜索系统110),该远程服务系统可以提供对本地服务模块102提供的搜索功能的更新。此外,在一些实现方式中,搜索系统110可以提供远程搜索功能。

在图4A中,本地服务模块102-4充当对一个或更多个应用400-1至400-N的搜索服务。在图4A中,应用400可以向本地服务模块102-4发出搜索请求并从本地服务模块102-4接收搜索响应(例如,搜索结果)(例如,经由接口模块402)。在图4B中,本地服务模块102-5被集成到启动器应用404中。启动器应用404还包括提供与启动器应用404相关联的功能的附加模块,例如启动器UI模块406和由启动器应用404提供的其他功能(附加启动器app模块408)。

包括在启动器或其他应用中的UI模块可以为用户提供UI。例如,UI模块可以为用户提供GUI。关于启动器应用,GUI可以包括可以由用户选择以启动应用的应用图标。启动器GUI可以提供多个屏幕,例如主屏幕和其他可以通过手势(例如,滑动)访问的屏幕。GUI还可以包括其他界面,例如搜索栏(例如,用于基于启动器的搜索)、搜索结果页、打开应用和网站的应用/web链接、应用/web广告链接、图形键盘输入、以及可以在本文中描述的其他界面。启动器应用404(例如,UI模块406)可以接收用户输入(例如,一个或更多个触摸/手势),并响应于输入提供各种功能,例如在屏幕之间改变,启动应用,发起搜索功能以及其他功能。在一些实现方式中,启动器应用404可以与用户设备100的操作系统116一起提供。在一些实现方式中,启动器应用404可以由第三方开发者提供,作为可以安装在用户设备100上的应用。尽管各种功能可以由本文中描述的启动器应用404提供,但在一些实现方式中,用户设备100可以包括提供归属于启动器应用404的功能的一个或更多个其他应用(例如,搜索应用)。

本地服务模块102-4、102-5包括提供本地搜索功能的搜索模块410和本地数据104-4、104-5(例如,搜索数据和其他数据)。例如,搜索模块410可以接收搜索请求并基于搜索请求生成搜索响应(例如,搜索结果)。请求应用(例如,图4A的应用1 400-1)或包括搜索的启动器应用(例如,参见图4B)可以呈现可以接收用户输入(例如,搜索查询)并呈现搜索结果的搜索GUI。

如本文中所述,包括搜索功能的本地服务模块102可以以各种方式实现,例如对应用的服务,或作为应用的组件(例如,启动器应用的搜索组件)。在某些情况下,本文中可以参照其中本地服务模块被包括在启动器应用中的图4B的实现方式来描述搜索模块功能。在这些情况下,由搜索模块提供的搜索功能也可以一般归属于本地服务模块和/或启动器应用。

本地服务模块102可以使用本地数据104来提供搜索功能、广告功能和/或本文中所述的其他功能。图(例如,图4A、图8A等)中示出的本地数据104可以包括各种类型的数据,这些数据可以在本文中以各种不同的方式被提及。本文中所述的示例本地数据分类可以包括搜索数据、广告数据和用户数据。搜索数据可以包括但不限于用于搜索的本地数据,例如搜索配置数据和搜索记录数据(例如,参见图6)。广告数据可以包括但不限于用于广告的本地数据,例如广告配置数据和广告记录数据(例如,参见图10)。用户数据可以包括但不限于指示用户如何与用户设备(例如,启动器应用和/或其他应用)互动的本地数据。

如本文中所述,本地数据可以以各种不同的方式使用,例如用于不同的功能(例如,搜索和广告)。因此,本文中的本地数据的示例分类仅用于描述/说明目的,并且不一定限制本地数据用于特定功能。例如,一些用于搜索数据的本地数据也可能被用于广告数据。此外,本地数据(例如,在图4A和图8A的本地服务模块中)的说明和描述不一定限制与本地数据相关联的位置和访问许可。例如,一些本地数据可以由本地服务模块访问,而其他本地数据可以由应用、OS等访问。因此,本文中所述的示例本地数据可以以各种方式存储/访问。

本地服务模块102可以从搜索系统110接收初始搜索数据,并且随后基于从搜索系统110接收的搜索数据更新来更新本地搜索数据。搜索模块410可以基于本地搜索数据执行搜索。尽管搜索模块410可以使用本地数据生成搜索结果,但在一些实现方式中,搜索模块410可以从搜索系统110请求搜索结果。搜索系统110可以包括可以向本地搜索模块410和本地数据104提供更新的服务器搜索更新模块412和服务器搜索更新数据414。搜索系统110可以包括可以以类似于本地搜索模块410的方式提供远程搜索功能的服务器搜索模块416和服务器搜索数据418。

在一些实现方式中,搜索模块410可以将搜索结果个性化(例如,执行个性化搜索)。例如,搜索模块410可以基于指示哪些应用安装在用户设备上的本地用户数据来个性化搜索结果。搜索模块410还可以基于已安装应用的使用数据来个性化搜索结果。使用数据可以指示与应用相关联的不同用户事件,以及事件发生的时间。示例用户事件可以包括应用的安装、应用的卸载、重新安装、应用的打开、应用的页面浏览和商务事件(例如,添加到购物车和/或完成购买)。在一些实现方式中,搜索模块410可以向搜索系统110报告搜索使用数据,例如查询历史和搜索结果选择。

当搜索在用户设备上本地执行时,搜索结果可以响应于用户搜索查询输入而即时显示给用户。例如,搜索模块410可以响应于用户在搜索GUI中输入单个查询字母而(例如,向启动器应用404或另一应用400)提供搜索结果。搜索模块410也可以响应于输入附加的搜索查询字符而即时更新搜索结果。

可以从远程搜索系统110获得/更新的本地搜索数据可以被用于提供即时和相关的搜索结果。此外,本地用户数据(例如,应用安装/使用数据)可以被用于增强搜索结果的个性化和相关性。使用本地用户数据来增强个性化和相关性也可以保持用户的隐私,因为本地数据104可以保持在用户设备100上。

当搜索结果在本地生成时,搜索模块410可以以可靠的方式提供即时和相关的搜索结果。例如,搜索模块410可以提供搜索结果,而不管因特网连接状态如何。在具体示例中,搜索模块410可以在没有因特网连接或因特网连接不佳时提供相关的搜索结果。尽管搜索模块410可以在本地提供搜索结果,但在一些实现方式中,搜索模块410可以从远程搜索系统110检索搜索结果。

用户可以将搜索查询输入到启动器应用搜索GUI中。例如,用户可以通过键入/说出搜索查询来将搜索查询输入到搜索栏中。启动器应用404可以生成包括搜索查询和其他数据的本地搜索请求。搜索请求的数据结构可以被称为查询对象。该查询对象可以包括用户搜索查询(例如,文本/数字)以及其他用户搜索查询数据。在一些实现方式中,启动器应用404(例如,本地服务模块102-5)可以获得上下文数据以包括在查询对象中。上下文数据可以包括各种类型的数据,例如用户ID、操作系统信息、设备类型信息、地理位置数据、一天中的时间、查询历史数据(例如,在启动器应用中的一个或更多个先前查询)、应用使用数据、用户运动状态数据(例如,行走、骑自行车、驾驶)、用户历史上下文(例如,所有上述历史)和/或查询的类别(例如,在GUI中选择的)。在一些实现方式中,启动器应用404可以在查询对象中包括特定于用户的数据,例如与启动器应用相关联的用户偏好和/或用户历史数据。示例用户特定数据可以包括但不限于应用使用数据(例如,特定于应用的使用数据)、用户人口统计数据、用户地理位置偏好、过去的查询以及垂直/分类偏好,例如美食偏好或酒店偏好。启动器应用404可以存储特定于用户的数据。在一些实现方式中,本文中所述的一些查询对象数据可以由搜索模块410在搜索请求时获得。

搜索模块410可以为启动器应用404生成要显示的搜索结果。该搜索结果可以包括各种数据。与单个搜索结果相关联的数据可以被称为“搜索结果数据对象”或“搜索结果对象”。如本文中所述,单个搜索结果对象可以包括显示数据、访问数据和结果评分。启动器应用404(例如,UI模块406)可以使用显示数据来在搜索GUI中呈现搜索结果。显示数据可以包括但不限于:1)应用名称,2)结果的标题(例如,餐厅名称),3)与结果相关联的状态描述(例如,餐厅的描述),以及4)与应用/状态相关联的一个或更多个图像。

搜索结果对象可以包括用户设备和/或启动器应用可以用来访问与搜索结果相关联的应用状态(例如,其他应用之一的应用状态)的访问数据。应用状态一般可以指应用的页面/屏幕。在某些情况下,访问数据可以包括在用户设备上启动应用状态的应用统一资源标识符/定位器(URI/URL)。在其他情况下,访问数据可以包括应用元数据,应用可以使用该应用元数据来访问应用/状态。用户可以访问各种不同的应用和在不同的应用中的应用状态(例如,页面)。

启动器应用可以将搜索结果呈现为用户可选择的链接,该链接可以打开安装在用户设备上的应用并访问应用和网站内的应用内容。例如,一些用户可选择的链接可以访问应用的主页状态(例如,应用主页),例如通常在打开应用时访问的应用的主页面。作为另一个示例,一些用户可选择的链接可以访问应用内实体的应用内容状态(例如,页面)。用户可以在搜索GUI中选择(例如,触摸/点击)用户可选择的搜索结果之一。用户设备可以使用包括在接收到的搜索结果中的访问数据打开与搜索结果相关联的应用状态。然后,用户可以在用户设备上与访问的应用状态进行互动。如果应用没有安装在用户设备上,则用户设备可以下载该应用并随后访问与用户选择的搜索结果相关联的状态。

图4A示出了示例搜索应用GUI(例如,由启动器应用404或其他应用的UI模块406生成)。在图4A中,用户在搜索栏420(例如,文本框)中输入部分搜索查询“ama”,这可以触发搜索。例如,用户可能已经开始输入“ama”,意图是输入“amazon(亚马逊)”并打开亚马逊购物应用或其他亚马逊应用。启动器应用(例如,搜索模块410)在本地识别和排列应用链接422-1、422-2、422-3,以用于打开以下安装的应用:1)亚马逊购物应用,2)AMAZON 

图5示出了描述图4B的环境的操作的示例方法。在框500中,本地服务模块102-5从搜索系统110获取搜索数据(例如,搜索索引、评分函数等)。在框502中,启动器应用404接收用户搜索查询。在框504中,搜索模块410基于用户搜索查询和/或其他数据(例如,用户数据、用户上下文数据等)在用户设备100上本地生成搜索结果。搜索结果可以包括打开安装在用户设备上的应用的链接。搜索模块410可以使用设备端数据以及从搜索系统110缓存的数据来生成搜索结果。

在框506中,启动器应用404呈现搜索结果。然后,用户可以选择(例如,触摸/点击)呈现的搜索结果之一。在框508中,启动器应用404检测用户对搜索结果的选择。在框510中,用户设备响应于对搜索结果的选择而访问已安装应用的应用状态。替选地,在框510中,如果显示未安装的应用的搜索结果,则用户设备可以访问与搜索结果相关联的应用/网页。在一些情况下,用户设备可以访问数字分发平台的应用/网页以下载该应用。在某些情况下,用户设备可以在安装后被路由到(例如,“深度链接到”)应用状态。

参照图4A,本地服务模块102-4包括搜索模块410,其基于本地数据104-4,例如,本地搜索数据(例如,搜索索引、搜索配置数据等)和本地存储的用户数据(例如,应用使用数据)生成搜索结果。本地服务模块102-4可以包括更新模块108-4,其从搜索系统110检索更新。这些更新可以修改搜索模块410的功能。附加地或替选地,更新可以修改本地搜索数据。

搜索模块410可以基于包括在用户设备上的搜索数据生成搜索结果。在图4A中包括在用户设备上的示例搜索数据可以被表示为应用列表和相关联的元数据。示例搜索数据也可以表示为搜索记录(例如,参见图4A和图6)。

搜索数据可以包括用于搜索的各种数据结构,例如列表、表格、一个或更多个搜索索引等。在一些实现方式中,搜索数据可以包括应用列表(例如,已安装的应用列表)和列表中每个应用的相关联的应用元数据。例如,搜索数据可以包括应用标识符(identifier,ID)的列表以及可以映射到应用ID的相应搜索查询。另外的示例应用元数据可以包括与应用相关联的其他关键词。搜索模块410可以基于搜索查询和与应用相关联的应用元数据之间的匹配来识别搜索结果的应用。应用元数据可以基于从搜索系统110获得的搜索数据,该搜索数据指示其他用户可能用于识别用于选择的应用的搜索查询和关键字的类型。在一些情况下,应用元数据可以基于本地获取的用户数据(例如,搜索交互数据),该数据指示与用户选择的应用相对应的搜索查询。

图6示出了示例搜索记录600。搜索记录600可以包括与应用相关联的数据,例如应用的打开状态(例如,应用主页)和/或另一个应用状态(例如,实体(例如,企业)的应用内容)。例如,搜索记录600可以包括特定企业评论应用的数据。作为另一个示例,搜索记录可以包括餐厅评论应用中的特定餐厅的数据。搜索模块410可以基于搜索查询和其他查询数据来对搜索记录进行识别和评分/过滤。搜索模块410可以基于搜索记录生成搜索结果。

搜索记录600可以包括唯一地标识搜索记录600的搜索记录ID 602。搜索记录600可以包括应用名称/ID 604,该应用名称/ID 604可以包括标识与搜索记录600相关联的应用(例如,唯一标识应用)的应用名称和/或应用ID。搜索记录600还可以包括安装状态指示符606,该指示符指示应用是否安装在用户设备100上和/或该应用是否在过去被安装。

搜索记录600可以包括搜索/评分数据608,搜索模块410可以使用该数据来识别搜索记录600和/或对搜索记录600评分。搜索/评分数据608可以包括各种类型的数据,例如应用描述、应用状态描述、与应用相关联的关键词、与应用相关联的可能的部分/完整的查询,以及用于识别应用的其他数据。描述数据可以包括与应用/状态相关联的文本/数字,例如从应用状态中获得(例如,爬取/抓取)的文本/数字。在一些实现方式中,描述数据可以包括地理位置数据,例如邮政地址和/或地理位置坐标(例如,纬度/经度)。应用状态和/或网页的示例描述数据还可以包括与应用状态相关联的实体(例如,企业、电影、歌曲等)的简要描述、用户评论、评级数和营业时间。

搜索/评分数据608可以包括评分/过滤数据。评分/过滤数据可以包括由搜索模块410用于在搜索期间对搜索记录进行评分的值。示例的评分值(例如,评分特征)可以包括但不限于人气评分、评论数、评级数、聚合使用值和应用下载数。人气评分可以指示应用的受欢迎程度和/或应用状态的受欢迎程度。聚合使用值可以包括指示多个用户在一段时间内(例如,每天/每月)访问应用状态的次数的数据。聚合使用值可以包括不同地理位置(例如,城市、州、国家)、语言、设备类型、操作系统、一天中的时间、一周中的哪一天以及其他参数组合的聚合值。

在一些实现方式中,搜索系统110可以基于聚合使用数据(例如,指示应用被下载的次数和/或应用/状态被访问的次数的聚合使用值)确定应用和/或应用状态的人气评分。人气评分可以是相对于其他应用和应用状态计算的值。例如,应用的人气评分可以指示应用相对于其他应用被下载的次数。作为另一个示例,应用状态的人气评分可以指示相对于该应用和/或其他应用中的其他应用状态而言,应用状态被访问的次数。在一些实现方式中,搜索记录600可以包括应用/状态的多个人气评分(例如,不同国家、语言等的人气评分)。

在一些实现方式中,搜索/评分数据608可以包括与应用相关联的聚合搜索/使用数据。聚合搜索/使用数据可以包括与来自多个用户的搜索和应用使用相关联的数据。例如,搜索记录600可以包括由其他用户使用的部分/完整的搜索查询,以及基于查询选择的应用链接。在具体的示例中,Facebook应用的搜索记录可以包括基于多个个人用于搜索Facebook应用的查询或查询会话的“fb”的部分查询。聚合搜索/使用数据也可以指示多个用户如何使用应用。

搜索记录600可以包括用于显示搜索结果(例如,文本/图像)的显示数据610。搜索记录600还可以包括用于访问与搜索记录600相关联的应用状态的访问数据612(例如,URI/URL)。在某些情况下,访问数据可以包括应用可以用来访问应用状态的应用元数据。用于访问应用状态的示例应用元数据可以包括特定于应用的实体ID,例如用于在企业评论应用中代表企业的数字代码。在一些实现方式中,访问数据612还可以包括web访问数据,例如webURL,其用于访问与应用状态相对应的网页(例如,包括与应用状态相同/相似的信息的网页)。此外,在一些实现方式中,访问数据612可以包括用于在应用没有被安装在用户设备上的情况下从数字分发平台118下载应用的下载链接。

搜索数据在用户设备上覆盖的范围可以不同。在一些实现方式中,搜索数据可以包括安装在用户设备上的应用的数据。在一些实现方式中,搜索数据可以包括已经安装在用户设备上的所有应用(例如,包括已卸载的应用)的数据。在一些实现方式中,搜索系统110可以向用户设备提供搜索数据,该搜索数据包括尚未安装在用户设备上的附加应用(例如,一组N个最受欢迎的应用)的搜索数据。在一些实现方式中,搜索系统110可以基于从用户设备接收到的搜索查询(例如,报告给搜索系统110的数据的本地搜索查询和/或在在线使用搜索系统110进行搜索期间提交给搜索系统110的查询)来预测安装在用户设备上的应用。在一些实现方式中,搜索模块410可以过滤掉在搜索期间识别的未安装的应用的搜索记录。

搜索模块410可以基于本文中描述的各种数据来对搜索记录进行识别和评分/过滤。例如,搜索模块410可以基于包括在查询对象中的数据与搜索记录之间的匹配(例如,搜索查询的文本与搜索记录之间的匹配)来对搜索记录进行识别和评分/过滤。搜索模块410还可以基于与搜索记录相关联的数据(例如,包括在搜索记录中的评分特征)对识别的搜索记录进行评分/过滤。在一些实现方式中,搜索模块410还可以基于用户数据(例如,已安装的app和以前与应用的交互)来对搜索记录进行识别和评分/过滤。

搜索模块410可以为每个搜索结果生成结果评分(例如,使用评分函数)。结果评分可以指示搜索结果与搜索查询和其他查询数据的相关性。搜索记录的结果评分可以指示该搜索记录在该搜索查询的其他搜索记录中的相对排名。在一个示例中,较大的结果评分可以指示搜索记录与搜索查询更相关。在一些实现方式中,结果评分可以是从0.00到1.00的十进制数值,其中更接近1.00的评分可能指示该结果更相关。搜索模块410可以基于结果评分对GUI中的搜索结果进行排名。例如,评分较高的搜索结果可以在搜索引擎结果页中排名较高。

搜索模块410可以以各种不同的方式生成结果评分。在一些实现方式中,搜索模块410可以基于一个或更多个评分特征为搜索记录生成结果评分。评分特征可以与搜索记录和/或搜索查询(例如,查询对象)相关联。与搜索记录相关联的示例评分特征可以包括人气值、聚合数据值、评级等。搜索模块410可以基于未明确列出的附加评分特征和/或本文中列出的评分特征中的一个或更多个来确定结果评分。

在一些实现方式中,搜索模块410可以包括评分函数。例如,该评分函数可以基于多个评分特征生成结果评分。在一些实现方式中,搜索模块410可以包括一个或更多个机器学习模型(例如,监督学习模型),其被配置成接收一个或更多个评分特征并输出结果评分。

在一些实现方式中,搜索模块410可以通过基于用户数据生成结果评分来个性化结果。例如,搜索模块410可以基于用户的应用的安装状态和/或用户的应用的使用频率来对结果进行评分/过滤。在一个示例中,搜索模块410可以提高被用户安装和/或使用(例如,经常使用)的应用的评分。在另一个示例中,搜索模块410可以移除未安装在用户设备上的应用的结果。

在一些实现方式中,搜索模块410可以基于第一组标准(例如,搜索查询与搜索记录之间的匹配(例如,文本匹配))来最初识别搜索记录。在这些实现方式中,搜索模块410可以从最初识别的搜索记录集中选择搜索结果。在一些实现方式中,最初识别的搜索记录集可以被认为是可以被进一步评分的搜索记录的“考虑集”。例如,可以使用评分函数/模型(例如,加权评分函数和/或机器学习模型)对考虑集进行进一步评分。

如本文中所述,在一些实现方式中,搜索模块410可以基于用户数据生成搜索结果。尽管用户数据被示出为与搜索数据分开,但用户数据可以被本地集成到搜索数据中(例如,在搜索记录中)。用于搜索的用户数据可以包括各种类型的数据。用户数据可以包括应用安装和应用使用数据。例如,用户数据可以指示当前安装的应用、应用安装的时间、应用使用的时间、应用的使用频率、在应用中执行的具体事件(例如,应用打开、页面浏览、商务事件和自定义的事件)、应用卸载的时间以及其他应用的使用度量。用户数据还可以包括指示用户如何与启动器应用互动的数据。例如,用户数据可以包括过去的搜索查询、过去的搜索结果和结果选择的列表。用户数据可以包括本文中所述的任何事件的时间戳,例如应用安装/使用、搜索和/或结果查看/选择的时间戳。

在一个示例中,搜索模块410可以基于应用的使用数据来对搜索记录进行识别和评分/过滤。例如,搜索模块410可以提升与用户经常使用和/或最近使用的应用相关联的搜索结果。在另一个示例中,搜索模块410可以基于用户数据识别搜索记录,该数据指示用户为特定的搜索查询所选择的应用。例如,用户数据可以指示用户在寻找Facebook应用时通常键入“fb”。注意,搜索模块410可以基于在用户设备上本地学习和存储的个人用户数据,以及从其他用户学习的聚合用户行为数据来识别搜索记录。如本文中所述,聚合用户行为数据可以从远程搜索系统110和远程广告系统112获得。

用户可以使用启动器应用404,意图是响应于搜索查询的输入而找到一个或更多个特定应用。例如,用户可以输入搜索查询,意图是寻找单个特定应用。用户旨在在输入的搜索查询的搜索结果中找到的该特定应用(或多个应用)可以被称为“预期应用”。在具体的示例中,如果用户输入搜索查询“fb”,意图是找到打开Facebook应用的链接,则Facebook应用可以被视为搜索查询的预期应用。

搜索模块410可以以各种方式将应用识别(例如,预测)为预期应用。在一些实现方式中,搜索模块410可以将第一应用结果(例如,最高评分的结果)指定为预期应用。在一些实现方式中,搜索模块410可以包括对将指定为预期应用的应用的附加的/替选的要求。例如,如果搜索结果的评分(例如,指示应用的相关性)大于阈值评分,则搜索模块410可以将应用识别为预期应用。在另一个示例中,如果搜索结果评分大于搜索结果中的其他搜索结果评分达阈值量,则搜索模块410可以将应用识别为预期应用。在一些实现方式中,搜索模块410可以要求搜索查询的全部(或部分)和与应用相关联的字符串(例如,在应用元数据中)相匹配。在一些实现方式中,搜索模块410可以要求预期应用与阈值使用量相关联(例如,在指定的时间段)。

本地服务模块102可以随着时间的推移更新其搜索功能(例如,搜索记录识别、评分和过滤功能)。本地服务模块102还可以随时间更新其搜索数据。例如,本地服务模块102可以包括更新本地服务模块102的功能和数据的更新模块108。更新模块108可以从搜索系统110获得更新的搜索功能和搜索数据(例如,用于搜索记录)。

在一些实现方式中,更新模块108可以向搜索系统110报告应用使用情况、搜索使用情况和/或搜索结果查看/选择数据,以便搜索系统110可以更新远程用户和/或聚合数据(例如,来自多个用户的聚合数据)。示例更新的搜索数据可以包括与特定应用(例如,应用包)相关的任何信息,包括但不限于关键词(例如,替选关键词)、人气评分、类别信息等。在一些实现方式中,更新模块108可以在不同的时间向搜索系统110提出更新请求,例如定期和/或在自先前更新以来过去阈值时间量之后。在一些实现方式中,更新模块108可以被配置成响应于恢复先前断开的/缓慢的因特网连接来获取更新。在一些实现方式中,传输至搜索系统110/从搜索系统110传输的数据可以被聚合、混淆或以其他方式预处理,以防止将特定的用户行为与用户的设备相关联。例如,可以实现差分隐私的形式或联合学习的形式。

更新模块108可以向搜索系统110生成个性化的更新请求,例如对已安装应用的更新请求。在一些实现方式中,更新可以是限于自上次更新以来的变化的“增量”,例如新安装的应用的搜索记录和/或自上次本地服务模块更新以来在搜索系统110处更新的数据。在一些实现方式中,更新可以针对特定的地理位置或其他数据进行定制。在一些实现方式中,搜索系统110可以确定和/或预测哪些应用安装在用户设备上。例如,用户设备可以发送已安装应用的列表(例如,使用布鲁姆过滤器、差分隐私和/或安全散列方法)和/或允许搜索系统110预测哪些应用被安装的数据(例如,查询历史)。在某些情况下,搜索数据可以不针对用户进行个性化。

在一些实现方式中,搜索系统110可以将更新推送给用户设备。更新也可能受电池水平和/或网络状态的影响。例如,请求更新的决定可以有更新标准,例如阈值电池水平和/或连接水平。

本地服务模块102可以基于因特网连接状态修改行为。例如,一些搜索记录可以包括元数据,该元数据指示应基于因特网连接状态显示搜索结果。在一个示例中,作为应用再交互结果的特定应用链接可能需要因特网连接才能显示,例如当该链接访问远程资源(例如在特定于应用的服务器)时。

尽管搜索系统110可以提供用于用户设备上的本地搜索的数据,但在一些实现方式中,搜索系统110可以向本地服务模块102提供搜索结果。例如,在一些情况下,搜索模块410可以从搜索系统110检索搜索结果。搜索系统110(例如,服务器搜索模块416和服务器搜索数据418)可以使用与搜索模块410类似的操作(例如,识别/评分/选择操作)产生搜索结果。在一些实现方式中,在本地无法获得足够的相关结果时,搜索模块410可以从远程搜索系统110检索结果作为备用。在一些实现方式中,搜索模块410可以在远程搜索系统110由于不良/不可用的因特网连接而不可用的情况下提供本地搜索结果。

图7示出了描述启动器应用404的操作的示例方法。在框700中,本地服务模块102-5(例如,更新模块108-5)从搜索系统110获得搜索数据。在框702中,本地服务模块102-5(例如,搜索模块410)接收搜索查询(例如,输入到启动器应用404中)。在框704中,搜索模块410基于接收到的搜索查询识别搜索记录的考虑集。在框706中,搜索模块410对搜索记录的考虑集进行评分以确定搜索结果的最终集。在框708中,启动器应用404(例如,UI模块406)显示最终搜索结果(例如,作为用户可选择的链接)。

在框710中,更新模块108-5确定是否更新搜索数据。如果更新模块108-5请求/接收更新,则更新模块108-5基于在框700中接收到的更新来更新本地服务模块102-5。如果更新模块108-5没有请求/接收更新,则本地服务模块102-5可以在框702中接收未来的搜索查询并使用先前接收到的更新数据执行搜索。

图8A至图8B示出了提供本地设备端广告功能的本地服务模块102的示例实现方式。本地广告功能可以基于在用户设备上本地存储的数据提供广告结果。例如,本地广告功能可以基于设备上访问的应用页面、用户搜索查询、搜索结果和其他参数提供广告结果。广告结果可以被称为“广告”,其可以被呈现为GUI,例如搜索GUI或应用页面中的广告链接。图8A至图8B还包括远程服务系统(例如,广告系统112),其可以提供对本地服务模块102提供的广告功能的更新。此外,在一些实现方式中,广告系统112可以提供远程广告功能。

示例广告可以包括应用安装广告,该应用安装广告广告未安装在用户设备上的应用。安装广告(例如,安装广告链接)可以将用户引导到用于下载应用的数字分发平台。广告还可以包括打开安装在用户设备上的应用(例如,到应用主页或特定的应用实体页面)的再交互广告。

在图8A中,本地服务模块102-6用作对一个或更多个应用800、802(例如,搜索应用800、web浏览器或其他应用)的广告服务(例如,“本地ad服务器”)。在图8A中,应用800、802可以向本地服务模块102-6发出广告请求,并从本地服务模块102-6(例如,经由接口模块)接收广告响应(例如,广告结果)。在图8B中,本地服务模块102-7被集成到启动器应用804中。此外,图8B中的本地服务模块102-7包括如关于图4A至图7描述的搜索功能。启动器应用804还包括提供与启动器应用804相关联的功能的附加模块,例如启动器UI模块806和由启动器应用804提供的其他功能(例如,附加启动器app模块808)。

本地服务模块102-6、102-7包括提供本地广告功能的广告模块810(“ad模块810”)和本地数据104(例如,广告数据和其他数据)。例如,ad模块810可以接收广告请求并基于广告请求生成广告响应(例如,广告结果)。广告请求应用(例如,参见图8A)或启动器应用模块(例如,参见图8B)可以在GUI中呈现广告结果。图8B的本地服务模块102-7包括搜索模块410,其可以提供本文中所述的搜索功能。尽管生成广告不需要搜索功能,但在一些实现方式中,ad模块810可以基于与搜索有关的各种参数提供广告结果。例如,ad模块810可以基于搜索结果、用户的搜索查询和/或其他搜索参数来定向广告。在一些实现方式中,其他搜索参数可以包括与搜索相关联的算法生成的信号,例如预测的搜索类别、预测的用户意图等。

如本文中所述,包括广告功能的本地服务模块102可以以各种方式实现,例如对应用的服务,或作为应用的组件(例如,启动器应用的广告组件)。在某些情况下,ad模块功能可以在本文中参照图8B的实现方式进行描述,其中本地服务模块102-7被包括在启动器应用804中。在这些情况下,由ad模块810提供的广告功能也可以一般归属于本地服务模块102-7和/或启动器应用804。

本地服务模块102可以从广告系统112接收初始广告数据,并且随后基于来自广告系统112的广告数据更新来更新本地广告数据。ad模块810可以基于本地存储在用户设备上的数据提供广告,例如广告内容和广告定向参数。尽管ad模块810可以使用本地数据选择广告,但在一些实现方式中,ad模块810可以从广告系统112请求广告。广告系统112可以包括提供远程广告功能的服务器广告模块812和服务器广告数据814。广告系统112可以包括可以提供广告功能/数据更新的服务器广告更新模块816和服务器广告更新数据818。

环境包括例如经由web/应用广告活动界面与广告系统112通信的广告商设备122。广告商可以使用广告设备122来通过使用活动界面向广告系统112提供广告数据。该环境还可以包括可以向广告系统112提供广告(例如,由广告商设备122生成的)的ad网络124。然后,广告系统112可以将广告提供至用户设备。尽管广告系统112可以向用户设备提供广告数据,但在一些实现方式中,广告商(例如,广告商设备122和/或ad网络124)可以直接向用户设备提供广告数据。

示例广告数据可以包括用于在用户设备上生成广告结果的广告内容(例如,图像/文本)。广告数据还可以包括定义何时显示广告的广告定向参数。例如,广告商可以为广告指定定向参数,当满足这些参数时,这些参数可能导致广告的显示。示例的广告定向参数可以包括但不限于与搜索结果、预期应用(例如,第一搜索结果)、用户背景(例如,地理位置、设备参数等)、用户的历史web/应用使用和/或用户的当前部分/整个搜索查询相关联的数据。广告商也可以指定查询广告的出价价格。广告商还可以指定对显示广告的频率的限制(例如,限制为每天一次)。

在一些实现方式中,本地服务模块102可以个性化广告(例如,基于用户数据选择广告)。在一些实现方式中,本地服务模块102可以向广告系统112报告使用数据。示例使用数据可以包括广告互动数据(例如,广告观看/选择)。

当在本地执行广告选择时,广告可以例如响应于搜索查询输入和/或响应于访问应用页面被即时显示给用户。例如,本地服务模块102可以响应于用户输入单个查询字母而提供广告。可以从远程广告系统112获得/更新的本地广告数据可以被用于提供即时和相关的广告。此外,本地用户数据(例如,应用的安装/使用数据)可以被用来增强广告的个性化和相关性。使用本地用户数据来增强个性化和相关性也可以保持用户的隐私,因为本地数据可以保持在用户设备上。

当广告在本地生成时,本地服务模块102可以以可靠的方式提供即时和相关的广告。例如,本地服务模块102可以提供广告,而不管因特网连接状态如何。在具体示例中,本地服务模块102可以在没有因特网连接或因特网连接不佳时提供相关广告。尽管本地服务模块102可以在本地提供广告,但在一些实现方式中,本地服务模块102可以从远程广告系统112检索广告。

启动器应用804可以在搜索结果中显示一个或更多个广告。例如,广告可以用于应用下载(例如,用于未安装在设备上的应用)和/或是用户已在其设备上安装的应用的链接。广告(例如,广告链接)可以包括与搜索结果类似的数据。例如,再交互广告可以打开应用主页和/或其他应用状态。作为另一个示例,安装广告可以包括访问数据,其访问数字分发平台以下载链接中广告的应用。

图8A示出了包括广告820的示例搜索GUI。该示例GUI可以由用户设备上的应用(例如,搜索应用、启动器应用或其他应用)生成。该GUI包括可能已经生成的搜索结果,如本文关于图4A描述的。在图8A中,用户在搜索栏420(例如,文本框)中输入部分搜索查询“ama”,这可以触发搜索和广告。在图8A中,本地服务模块102(例如,ad模块810)本地选择沃尔玛购物应用的广告(例如,基于定向参数和/或评分)。该应用(例如,启动器应用)可以呈现本地选择的广告。用户可以选择(例如,触摸/点击)沃尔玛购物应用的广告链接820以访问数字分发平台并下载沃尔玛购物应用。在广告指向特定应用状态的情况下,在安装和打开沃尔玛购物应用后,用户设备可以被自动引导到特定应用状态。

图9示出了描述图8A的环境的操作的示例方法。在框900中,广告商使用广告商设备122生成广告系统112的广告数据。在框902中,广告系统112向本地服务模块102-6提供广告数据。在框904中,用户设备上的应用(例如,请求应用)从本地服务模块102-6请求广告。

请求应用可以响应于一个或更多个触发而生成本地ad请求。示例触发可以包括用户打开应用、用户访问应用的特定状态、用户在应用内的应用状态之间转换以及/或者应用内的另一动作。在一些实现方式中,触发可以取决于应用的类型。例如,如果请求应用是搜索应用,则可以响应于显示搜索框和/或执行搜索来触发本地ad请求。在另一示例中,如果请求应用是启动器应用,则可以响应于用户访问启动器的特定屏幕以及/或者响应于用户手势来触发本地ad请求。在一些实现方式中,请求应用可以被配置成在用户设备不具有至因特网(例如,至远程ad系统112)的足够连接时生成本地ad请求。在一些实现方式中,请求应用可以被配置成:在用户设备指示用户状态的改变(例如从蜂窝数据切换至WiFi)时,或者如果用户在快速移动之后变为静止(例如,开车到步行/坐着),则生成本地ad请求。

在一些实现方式中,本地ad请求可以包括本地服务模块可以使用以选择广告的ad请求数据。例如,ad请求可以包括对广告选择的限制,例如特定应用白名单/黑名单、应用类别限制或其他限制。使用限制数据,本地服务模块和请求应用可以控制向用户广告的内容,例如被允许向用户广告的应用。在一些实现方式中,ad请求可以包括由请求应用提供的信息,例如关于用户的信息。关于用户的示例信息可以包括用户背景,例如GPS数据、用户人口统计数据(例如,年龄或性别)、预测的用户类别或组信息(例如,“是频繁点击者”、喜欢运动等)、关于请求应用本身的信息、由用户输入的搜索查询以及/或者用户正在查看的当前内容或页面。本地服务模块可以基于ad请求中包括的另外的信息向用户提供更相关/个性化的广告。在一些实现方式中,ad请求可以包括ad呈现信息,例如广告尺寸(例如,像素尺寸)、颜色或其他呈现信息。

在框906中,本地服务模块102-6(例如,ad模块810)响应于广告请求而选择广告。在框908中,本地服务模块102-6将所选择的广告提供至请求应用。在框910中,请求应用向用户显示广告。在框912至框914中,用户选择广告,并且用户设备对该选择作出响应。例如,用户设备可以访问与广告相关联的应用/web页面。如果广告用于下载应用,则用户设备可以访问由数字分发平台提供的应用/web页面以用于下载被广告的应用。

参照图8A,ad模块810可以基于本地广告数据和其他数据(例如本地存储的用户数据(例如应用/广告使用数据))生成广告。本地服务模块还可以包括从广告系统112检索更新的更新模块108-6。这些更新可以修改ad模块810的功能。另外地或替选地,更新可以修改本地广告数据。

广告数据可以包括由与广告系统112互动(例如,在广告活动界面中)的广告商生成的广告记录1000(例如,参见图10)。广告记录1000可以包括与广告相关联的数据。例如,广告记录1000可以包括广告内容1006(例如,用于呈现广告)和定向参数1008(例如,用于选择广告)。

广告商可以使用广告商设备122来定义广告记录中包含的广告的参数。例如,广告商设备可以访问由广告系统112提供的广告商界面(例如,基于web/应用的界面)。广告商界面可以允许广告商定义与广告相关联的数据(例如,图8A和图10所示的数据)。

广告商可以定义广告的内容(例如,广告内容1006),例如要包含在显示的广告中的文本和/或图像。示例广告内容可以包括本文描述的数据中的任何数据,例如描述应用、应用状态、网页、产品或服务的app图标和图像/文本。在一些实现方式中,广告商可以指定响应于广告的选择而采取的动作,例如响应于用户对广告的选择而由请求应用使用URI/URL。广告商还可以指定一个或更多个广告定向参数。

广告商可以为广告指定出价1010,该出价指示广告商将为与广告相关联的行为支付的金额。例如,出价可以是用于显示广告、选择广告以及/或者在选择广告之后执行动作(例如,安装应用或进行购买)的金额。广告记录还可以包括唯一地标识广告系统112中的广告的广告标识符/名称1002。广告记录1000还可以包括标识广告商的其他信息,例如广告商名称和广告活动名称1004。

在一些实现方式中,广告记录可以包括可以用于对广告进行选择/评分的与广告相关联的其他数据。例如,广告记录可以包括广告性能数据,该广告性能数据指示广告在由其他用户和/或用户设备显示/选择广告的其他场景中如何执行。作为另一示例,广告记录(例如,广告参数)可以包括指示广告受欢迎程度的数据。

在一些实现方式中,本地服务模块102(例如,ad模块810和/或本地数据模块424)可以确定性能度量以及/或者执行归因功能。示例性能度量可以跟踪ad观看、ad选择、应用的安装、购买和/或与广告的选择相关联的其他下游活动。在一些实现方式中,本地服务模块102可以通过监视用户设备上的数据(例如检测应用被安装)来确定性能度量以及/或者执行归因。在一些实现方式中,本地服务模块102可以接收来自设备上的其他应用的通信,并将该通信用于归因、改进广告定向和/或广告的自动生成或更新。例如,购物应用可以向本地服务模块102发送用户进行了购买的消息。该消息可以提供要用于归因于先前向用户显示的广告的信息。此外,该信息还可以用于更新设备端模型,增加显示广告的机会。该信息还可以用于自动禁用特定购物应用的未决广告。在一些实现方式中,本地服务模块102可以基于从其他源(例如,其他数据提供方和/或捆绑包更新)获取的数据来确定性能度量以及/或者执行归因。

广告记录可以包括本文所述的一个或更多个定向参数。在一些实现方式中,定向参数可以包括“预期应用”定向参数,该“预期应用”定向参数指定应当在搜索结果中被标识为预期应用以便选择广告的一个或更多个应用。例如,如果沃尔玛商店正在为沃尔玛应用做广告,则沃尔玛商店广告商可以指定,如果目标购物应用是搜索结果中的预期应用,则显示他们的沃尔玛购物应用。

在一些实现方式中,定向参数可以指示应当出现在搜索结果中以触发广告的一个或更多个应用。广告商还可以指定,所指定的应用应当出现在前N个搜索结果(例如,前3个搜索结果)中。在一些实现方式中,定向参数可以指示触发广告的选择的一个或更多个部分的/完整的搜索查询。在一些实现方式中,定向参数可以指示与搜索结果相关联的最小评分(例如,仅当搜索结果为至少75%相关/确信时才考虑该搜索结果)。

在一些实现方式中,定向参数可以指示是否应安装一个或更多个应用。例如,对于再交互广告,应当安装与再交互广告相关联的应用。在其他示例中,广告商可以指示应当(或不应当)安装一个或更多个应用。在一些实现方式中,定向参数可以基于应用使用,例如应用或类似应用被使用的频率、应用最后被使用的时间、以及用户过去与应用的类别的交互(例如,在应用与类别相关联的情况下)。在一些实现方式中,定向参数可以指示,如果搜索结果中的预期应用和/或其他应用与特定的一个或更多个应用类别(例如,餐馆、社交媒体、金融等)相对应,则应当显示广告。在一些实现方式中,用户的行为(例如,app交互、身体运动或其他行为)可以表明用户的兴趣(例如,兴趣的类别),例如锻炼、健康食品或其他兴趣。在这些实现方式中,定向参数可以包括用户的兴趣(例如,基于用户行为确定的)。

在一些实现方式中,定向参数可以包括特定应用是否已被删除或从未被删除。在一些实现方式中,定向参数可以包括应用的受欢迎程度(例如,基于下载次数和/或总合使用量)。在一些实现方式中,定向参数可以包括用户的地理位置、一天中的时间和用户设备数据(例如,设备类型、OS等)。

在一些实现方式中,定向参数可以指定广告已显示的次数,以及用户是否已选择(例如,触摸/点击)广告和/或安装了与广告相关联的应用。如果用户过去没有选择广告以及没有安装被广告的应用/内容和/或没有与被广告的应用/内容再交互,则广告商可能不太期望显示该广告。

在一些实现方式中,对于再交互广告,定向参数可以包括过去使用应用的时间和频率以及该应用被安装的时间。在一些实现方式中,针对再交互的定向参数可以包括广告将用户设备引导至的应用页面的受欢迎程度。

在一些实现方式中,定向参数可以包括用户在应用中花费的时间量。例如,定向参数可以指示,如果用户在一个或更多个应用中花费的时间量大于阈值,则应当选择广告。在一些实现方式中,定向参数可以包括用户在应用内执行或通常执行动作的一天中的特定时间、一周中的几天或其他时间。在一些实现方式中,定向参数可以基于由特定应用向本地服务模块102提供的特定于应用的数据。例如,应用可以提供关于特定用户在其应用内的使用模式的数据或者特定用户内容交互信息(例如用户在应用中是否“喜欢宠物”)。

ad模块810选择一个或更多个广告(例如,用于插入到应用页面、网页或搜索结果中)。ad模块810可以实现基于本文描述的定向参数和/或其他ad评分/选择参数来选择广告(例如,ad记录)的一个或更多个可配置的广告选择功能。例如,ad模块810可以选择满足定向参数的一个或更多个广告。在一些实现方式中,ad模块810可以基于定向参数来识别最初的广告的集合。ad模块810然后可以基于另外的因素(例如广告出价价格和/或与广告的预期互动(例如,用户选择、app安装等))来选择一个或更多个最终广告(例如,用于搜索结果的)。在一些实现方式中,ad模块810可以对最初识别的广告的集合进行评分,并选择具有最高评分(例如,ad相关性评分)的广告。

ad模块810可以包括ad候选选择模块(“候选选择模块”)、ad评分模块和ad选择模块。候选选择模块可以基于对定向参数的满足来选择初始的候选广告的集合。ad评分模块可以对候选广告进行评分。ad选择模块可以基于与候选广告相关联的评分来选择候选广告中的一个或更多个(例如,用于包括到搜索结果中)。例如,ad选择模块可以选择最高评分的ad(例如,用于包括在搜索结果中)。在广告被插入到搜索结果中的情况下,广告可以被称为“广告结果”。

ad评分模块可以实现对候选ad进行评分的ad评分函数和/或ad评分模型(例如,机器学习模型)。与候选广告相关联的评分可以指示广告与搜索结果、搜索查询和/或其他数据(例如,安装/使用数据)的相关性。ad评分模块可以基于本文描述的任何ad定向参数和/或应用交互参数(例如,总合/个人使用)来对广告进行评分。在一些实现方式中,ad评分模块可以基于设备因素(例如电池水平和/或网络状态)对广告进行评分。

在一些实现方式中,ad评分模块可以基于出价价格和/或与广告的预期互动(例如,ad选择和/或app安装)生成评分。在一些实现方式中,ad评分模块可以基于广告的预期值生成评分。预期值可以通过将出价价格与广告以预期方式执行(例如驱使用户选择广告、基于广告安装应用和/或基于广告进行购买)的概率相乘来计算。

示例附加广告评分特征可以包括用户与广告的先前交互数据(例如,显示次数、选择次数等)。另外地或替选地,一些系统可以收集聚合的用户行为数据,并将其与广告元数据(例如其他用户的广告的平均CTR)相关联。Ad评分特征还可以包括被广告的应用的受欢迎程度(例如,沃尔玛可能比小得多的购物应用更受欢迎)。Ad评分特征还可以包括用户与预期应用、考虑的广告(例如,如果ad是再交互广告)和/或应用的类别的个人用户交互数据(例如,用户可以每周使用购物app10次)。Ad评分特征还可能包括用户搜索行为,例如用户过去是否搜索过“运动鞋”以及应用是否专门销售运动鞋。在一些实现方式中,ad评分特征可以考虑一天中的时间以及类别在一天中的该时间内的相关表现。例如,购物app可能在夜晚更受欢迎,而天气应用可能在早上更受欢迎。其他ad评分特征可以包括广告数据的寿命,例如数据上次更新的时间。例如,较旧的数据可能与较低的评分相关联,这可能有利于较新的广告。在一些示例中,ad评分特征还可以包括广告商预算(例如,花费的金额和/或剩余预算)。

尽管ad模块810可以对广告进行评分以供选择,但在一些实现方式中,ad模块810可以不对广告进行评分。而是,ad模块810可以实现其他ad选择规则,例如选择最受欢迎的广告、最高性能的广告、与最受欢迎的应用相关联的广告、与最受欢迎的搜索结果相关联的广告等。可以从广告系统112获取/更新聚合的ad性能和其他受欢迎程度的度量。

在一些实现方式中,ad模块810可以基于应用的安装状态对ad进行过滤。例如,ad模块810可以移除已安装的应用的安装ad。ad模块810还可以移除未安装的应用的再交互ad。

如本文所述,ad模块810可以访问如下用户数据,ad模块可以使用该用户数据对广告进行识别/评分以供选择。在一些情况下,本文描述的用户数据也可以被集成到广告记录中。用户数据可以包括指示用户如何与先前的广告互动的数据。例如,用户数据可以指示每个广告的观看次数、广告是否被选择、以及与观看/选择相关联的其他数据(例如与产生结果的搜索和用于选择广告的ad参数相关联的数据)。用户数据可以包括本文描述的事件中的任何事件的时间戳,例如应用安装/使用、搜索和/或广告观看/选择的时间戳。

本地服务模块102可以随着时间的推移更新其广告功能(例如,ad识别、选择和评分函数)和数据(例如,ad数据和用户数据)。本地服务模块102可以包括更新模块108,该更新模块108对本地服务模块102的广告功能和数据进行更新。更新模块108可以从广告系统112获取更新的广告功能和广告数据。示例更新的广告数据可以包括本文描述的任何新的/修改的广告数据(例如,在广告记录中),例如新的广告和新的定向参数。

在一些实现方式中,本地服务模块102可以向广告系统112报告应用使用、搜索使用和/或广告观看/选择数据,使得广告系统112可以更新相应的聚合数据。在一些实现方式中,本地服务模块102可以使用诸如差分隐私、联合学习和/或本地聚合的隐私增强技术的形式向广告系统112报告应用使用、搜索使用和/或广告观看/选择数据。在一些实现方式中,更新模块108可以在各种时间(例如定期地和/或在自先前更新以来已经过了阈值时间量之后)向广告系统112做出更新请求。在一些实现方式中,更新模块108可以被配置成响应于恢复先前断开的/缓慢的因特网连接来获取更新。

更新模块108可以生成个性化的更新请求,例如对已安装的应用和与已安装的应用相关的广告的更新的请求。在一些实现方式中,更新可以是限于自上次更新以来的变化的“增量”,例如新安装的app的ad记录和/或自上次更新以来在广告系统112处已经被更新的数据。在一些实现方式中,更新可以针对特定的地理位置或其他数据进行定制。在一些实现方式中,广告系统112可以确定和/或预测哪些应用被安装在用户设备上。例如,用户设备可以发送已安装的应用的列表和/或允许广告系统112预测安装了哪些应用的数据(例如,查询历史)。在一些情况下,广告数据可能不针对用户进行个性化。在一些实现方式中,本地数据可能受制于到期日期/时间(例如,广告到期日期)。

在一些实现方式中,广告系统112可以向用户设备推送更新。更新也可能受到电池水平和/或网络状态的影响。例如,请求更新的决定可以具有更新标准,例如阈值电池水平和/或连接水平。

本地服务模块102可以基于因特网连接状态修改行为。例如,一些广告记录可以包括如下元数据,该元数据指示应当基于因特网连接的状态来显示ad。例如,特定的再交互结果(例如,广告)可能需要因特网连接才能显示。作为另一示例,一些应用广告可以在没有当前因特网连接的情况下提供延迟的安装(例如,稍后在连接时进行安装)。

尽管广告系统112可以提供用于在用户设备上进行本地广告的数据,但在一些实现方式中,广告系统112(例如,服务器ad模块812和数据814)可以向本地服务模块102提供广告。例如,本地服务模块102可以从广告系统112检索广告。广告系统112可以使用与本地服务模块102类似的操作(例如,识别/评分/选择操作)来生成广告。在一些实现方式中,当足够相关的广告在本地不可用时,本地服务模块102可以从远程ad系统112检索广告作为备用。在一些实现方式中,本地服务模块102可以在远程广告系统112由于不良/不可用的因特网连接而不可用的情况下提供本地广告。在一些实现方式中,本地服务模块102可以从远程广告系统112接收结果,并且比较评分以决定显示哪些广告(如果存在的话)。

图11示出了描述图8A的本地服务模块102-6的操作的示例方法。在框1100中,本地服务模块102-6(例如,更新模块108-6)从广告系统112获取广告数据/功能。在框1102中,本地服务模块102-6从请求应用接收广告请求。在框1104中,ad模块810基于定向参数选择初始的候选广告的集合。在框1106中,ad模块810(例如,基于与广告相关联的评分)从候选广告中选择一个或更多个最终广告。在框1108中,本地服务模块102-6向请求应用发送包括所选择的广告的响应。在框1110中,更新模块108-6确定是否更新广告数据。如果更新模块108-6请求/接收到更新,则更新模块108-6基于在框1100中接收到的更新来更新本地服务模块102-6,例如ad模块810和/或ad数据。如果更新模块108-6没有请求/接收到更新,则该方法在框1102中继续。

图12示出了描述图8B中的启动器804的操作的示例方法。在图8B中,启动器804包括提供本地搜索和广告功能的本地服务模块102-7。启动器804可以生成提供搜索结果和广告的搜索界面(例如,参见图8A的GUI)。

在框1200中,广告商可以使用广告商设备122在广告系统112中生成广告数据。在框1202中,本地服务模块102-7可以获取广告数据和搜索数据。在框1204中,本地服务模块102-7接收用户搜索查询(例如,输入到启动器搜索GUI中)。在框1206中,搜索模块410可以基于用户搜索查询生成搜索结果(例如,本地结果)。

在框1208中,ad模块810可以基于本文所述的广告定向参数中的任何广告定向参数来选择一个或更多个广告。例如,ad模块810可以基于搜索结果数据、用户数据(例如,先前的ad交互数据、上下文等)或其他参数来选择一个或更多个广告。尽管ad模块810可以针对每个搜索结果页面选择一个或更多个广告,但是在一些情况下,ad模块810可能不识别应当针对搜索结果页面显示的任何广告(例如,当没有广告满足定向参数时)。

在框1210中,启动器804在搜索GUI中呈现搜索结果和广告。在一些实现方式中,启动器804可以同时呈现搜索结果和广告。在其他实现方式中,启动器804可以在识别广告之前(例如,在正选择广告时)呈现搜索结果。在用户设备上对广告的本地选择可能发生得足够快,以至于用户可能无法区分广告和搜索结果的同时呈现与广告的后续呈现。在框1212中,启动器804检测用户对搜索结果或广告的选择。在框1214中,用户设备可以响应于对搜索结果或广告的选择来访问应用状态或访问数字分发平台。

在一些实现方式中,本地服务模块可以生成要用于本地功能(例如,搜索/广告)的本地数据(例如,本地搜索/广告记录数据)。在一个示例中,本地服务模块可以利用所确定的用户行为来生成另外的本地数据。例如,本地服务模块可以基于用户行为,例如与搜索的互动(例如,搜索查询、结果选择等),广告交互(例如,ad选择、印象等),或者用户设备上的其他用户动作生成搜索/广告数据。本地生成的数据可以用于提供/增强本文描述的功能,诸如搜索/广告选择/评分。本地数据可以基于积极的用户动作(诸如用户与搜索功能、广告或其他本地服务模块功能的交互)生成。本地数据还可以基于其他用户行为(诸如避免交互(例如,不选择广告)或以另一种方式(例如,滚动、滑动等)与用户界面互动)生成。

本文所述的搜索功能(例如,搜索记录识别、评分和过滤功能)、广告功能(例如,ad识别、选择和评分函数)、搜索数据(例如,app列表/元数据和搜索记录)和广告数据(例如,ad记录)仅是可以包含在本地服务模块102中的示例功能和数据。因此,除了本文明确描述的那些功能和数据之外,另外的/替选的功能/数据以及不同的功能/数据布置也可以由本地服务模块102实现。

图13示出了包括本地服务模块102-8的示例启动器应用1300。本地服务模块102-8可以向用户提供各种功能。示例功能可以包括但不限于:1)本地/远程搜索功能;2)本地/远程广告功能;3)另外的功能(例如,零状态功能、快捷方式、自动建议等);4)本地数据获取和处理;以及5)更新功能。

图13中的附加模块可以提供另外的功能。另外的功能可以包括但不限于:1)应用名称意向搜索;2)进入应用的快捷方式;3)零状态功能;4)建议的应用功能;以及5)自动建议功能。以与本地搜索和广告功能类似的方式,另外的功能可以包括本地功能,该本地功能可以实现以下操作:1)访问用户设备上的个人数据;2)在没有网络连接的情况下提供快速本地响应;以及3)集成到用户设备中,使得这些功能具有特殊权限(例如,优先执行)。

在一些实现方式中,本地服务模块102-8可以包括应用名称意向搜索功能,该应用名称意向搜索功能基于部分/完整查询确定用户正在寻找一个或多个特定应用。在一些情况下,本地服务模块102-8(例如,快捷方式模块1302)可以包括快捷方式链接功能,该快捷方式链接功能提供进入应用的快捷方式链接。快捷方式链接功能可以基于部分/完整查询来识别进入用户可能感兴趣的应用的深度链接列表。快捷方式链接可以以多种方式生成。在一些实现方式中,快捷方式可以由开发者提供。例如,开发者可以在下载应用之前提供进入该应用的快捷方式链接(例如,在应用包Android.apk文件中)。作为另一个示例,开发者可以在更新中提供快捷方式链接。在一些实现方式中,快捷方式链接可以被自动生成。例如,快捷方式链接可以是基于受欢迎程度的自动选择的链接。在另一示例中,快捷方式链接可以基于个人使用(例如,常用的应用状态)生成。在自动生成快捷方式链接的示例中,快捷方式链接可以在应用被使用时动态地生成。例如,可以基于用户访问的应用链接来添加/移除新的/旧的快捷方式链接。在一些实现方式中,快捷方式可以通过运行记录进入OS 116或直接至本地服务模块102-8的深度链接的app来提供。

在一些实现方式中,本地服务模块102-8(例如,零状态模块1304)可以提供零状态功能。零状态功能可以指响应于零状态触发(例如,除用户搜索查询之外)而提供至用户的功能。示例零状态触发可以包括但不限于应用中的用户手势(例如,用户滑动)、用户访问应用的特定页面(例如,特定启动器页面)、一天中的预定时间、用户的预定地理位置和/或用户“唤醒”电话(例如,使电话处于静止后的移动)。在一些实现方式中,访问包括搜索查询框的页面可以在用户输入搜索查询之前触发零状态功能。

在一些实现方式中,本地服务模块102-8可以提供零状态链接和/或零状态搜索查询(即,查询提示)。零状态链接可以指响应于用户选择而访问应用状态/页面的用户可选择的链接。零状态搜索查询可以指响应于用户选择而用作输入的搜索查询的用户可选择的搜索查询。在一些实现方式中,本地服务模块102-8可以使用本文描述的搜索功能来提供零状态链接,而无需搜索查询。例如,本地服务模块102-8可以基于用户上下文(例如,位置、一天中的时间等)和其他用户数据(包括先前的搜索活动和/或应用使用)执行搜索。可以基于编策的查询提示列表、先前的应用使用(例如,先前的搜索查询、链接选择等)或者其他因素来向用户提供零状态搜索查询。在一些实现方式中,可以响应于显示搜索框来显示零状态搜索查询列表。

在一些实现方式中,本地服务模块102-8(例如,建议的app模块1306)可以(例如,响应于零状态触发)提供建议的应用功能。建议的应用功能可以包括基于各种因素将打开应用的建议的链接的列表提供至用户。用于显示建议的应用的示例因素可以包括但不限于应用受欢迎程度、其他聚合的应用数据、个人应用使用(例如,显示更频繁使用的应用)、一天中的时间(例如,显示通常在该时间使用的应用)、最近的查询、网络状态(例如,显示当用户连接至未计量的WiFi时的流媒体应用)、以及地理位置(例如,显示通常在该位置使用的应用)。在一些实现方式中,建议的应用可以限于已安装的应用。在其他实现方式中,建议的应用可以包括当前没有安装在用户设备上的应用。在一些实现方式中,广告可以与建议的app一起显示。在一些实现方式中,潜在收入(例如,应用开发者为安装或再交互付费)可能影响排名。用于生成建议的应用链接的数据可以被本地存储并由远程服务系统106-4更新。在一些实现方式中,用于生成建议的应用链接的数据可以在本地生成(例如,源自用户设备)。

在一些实现方式中,本地服务模块102-8(例如,自动建议模块1308)可以包括自动建议功能。自动建议功能可以响应于部分/完整查询的用户输入来提供用户可选择的自动建议查询的列表(例如,在搜索框下)。本地服务模块102-8(例如,搜索模块410)可以使用所选择的自动建议搜索查询来执行搜索。本地服务模块102-8可以(例如,基于本地数据)在本地生成候选自动建议查询以及/或者从远程搜索系统110获取候选自动建议查询。在一些实现方式中,本地服务模块102-8(例如,自动建议模块1308)可以基于本地数据(例如,先前的查询与当前输入的查询之间的相关性)对候选自动建议查询进行排名。

本地服务模块102可以包括本地数据获取和处理模块424-1、424-2、……、424-6(本文中统称为“本地数据模块424”),其可以在用户设备上本地获取和处理数据。所获取的数据可以包括用户设备上的各种事件,诸如用户与本地服务模块102、启动器和/或用户设备上的一个或更多个其他应用的互动。示例事件可以包括UI事件(例如,用户手势输入和其他GUI互动)、搜索事件(例如,搜索查询输入、结果、结果选择)、广告事件(例如,显示/选择的ad)、应用事件(例如,安装、打开、卸载)、web事件(例如,网页互动)、另外的功能事件(例如,零状态互动、app名称意向、快捷方式选择、建议的app、自动建议事件等)以及设备上发生的其他事件。本地数据104可以存储用于搜索的个性化、广告选择和另外的功能的数据中的一些数据。本地服务模块102(例如,本地数据模块424)也可以向远程服务系统106(例如,搜索系统110、广告系统112、分析系统1310等)提供事件数据,其可以提供分析服务,例如更新远程服务系统106中的各种数据。

获取的事件可以包括描述事件的事件数据。例如,事件数据可以指示与事件相关联的应用(例如,应用名称)、事件类型(例如,搜索事件、广告事件等)以及事件发生的时间。一些示例事件数据可以包括查询历史数据(例如,先前输入的查询)、搜索结果选择数据和广告互动数据(例如,广告观看/选择)。另外的示例事件数据可以包括用户与UI(例如,启动器UI)的互动,诸如滚动事件或停留时间。

在一些实现方式中,一些应用可以包括向本地服务模块102提供事件数据的模块(例如,SDK)。例如,应用或OS可以提供指示应用内的各种动作(例如,应用打开、应用关闭、商务事件和/或自定义开发者定义的事件)的事件数据。在应用包括向本地服务模块102报告事件数据的模块的实现方式中,本地服务模块102和应用中包括的模块可以由同一方(例如,同一企业)开发。

本地数据模块102获取数据的程度可以是可配置和可更新的。例如,本地服务模块的不同实现方式可以在不同程度上获取和处理事件。此外,事件类型和获取的数据量可以是可配置的。在一个示例中,不同的OEM可以获取不同事件类型的事件数据以及/或者获取不同数量的数据。

在一些实现方式中,本地服务模块102可以向远程服务系统106和/或分析系统1310(例如,参见图13)报告事件数据。远程服务系统106可以基于从一个或更多个用户获取的数据提供远程功能(例如,搜索结果和/或广告)。在一些实现方式中,远程服务系统106可以基于用户/聚合的获取的数据向本地服务模块102提供更新数据。本地数据被提供至远程服务系统106的程度可以是可配置的。例如,本地服务模块的不同实现方式可以向远程服务系统106提供不同类型的事件和不同数量的数据。在一些实现方式中,分析系统1310可以与其他远程服务系统分离(例如,与搜索/ad系统分离)。尽管分析系统1310可以与远程服务系统106分离,但是在一些实现方式中,分析功能可以被集成到远程服务系统106中。

在一些实现方式中,可以实现隐私增强技术来保护用户隐私。例如,差分隐私、安全聚合和/或散列可以用于将原始分析数据转换成降低将数据关联到用户设备的可能性的形式。

在一些实现方式中,分析系统1310可以在将数据传输至远程服务系统106之前利用存储和转发缓存技术来累积多个事件消息。在一些实现方式中,分析系统1310可以使用已经消耗的带宽的计数来决定何时与远程服务系统106通信。在一些实现方式中,分析系统1310可以修改传输至远程服务系统106的数据。例如,如果用户在前一天进行了1000次点击,则分析系统1310可以选择仅发送最后10次。在另一示例中,如果用户正在漫游,则分析系统1310可以仅发送聚合的数据,诸如对最受用户欢迎的应用的点击。

在一些实现方式中,分析系统1310可以利用压缩算法来减少传输的数据。在一些实现方式中,分析系统1310可以使用密码术来防止未经授权的个人查看用户日志。

本地服务模块102中包含的模块可以代表与本地服务模块102相关联的功能。例如,搜索模块410和ad模块810可以分别代表搜索功能和广告功能。在一些实现方式中,模块包括定义的软件组件。例如,本地服务模块102可以包括在本地服务模块或包括本地服务模块的其他应用的安装期间定义的已定义的软件组件。可以例如通过来自数字分发平台118的软件更新来更新本地服务模块组件(例如,模块)。如本文所述,除了已定义的软件组件之外,包括在本地服务模块中的一些模块(例如,搜索模块410和ad模块810)还可以具有可配置/可修改的功能。可配置功能在图4A和图8A中被示出为配置数据。可配置功能可以存储在本地数据104中。如本文所述,不同的本地服务模块的配置数据可以被更新(例如,通过接收到的由更新模块108请求的更新捆绑包)。这些更新可以对配置功能(例如,搜索/ad算法)和/或其他数据(例如,搜索/ad记录)进行更新。

在一些实现方式中,配置数据可以包括有限的操作的集合,例如数据生成和操纵命令的集合。出于软件安全的目的,可以强制实施有限的操作的集合。示例操作可以包括但不限于:读/写和结构化数据改变(例如,模式改变),诸如创建表、删除表、修改表、插入/删除/更新/修改值或行或者建立索引。在特定实现方式中,可以使用结构化查询语言(SQL)(例如SQL命令)、其他语言和/或完全自定义的命令。特定的数据操纵命令可以包括更新搜索的受欢迎程度评分、删除记录以及改变搜索的SQL查询。在一些实现方式中,搜索算法可以是SQL查询,其中SQL查询及其绑定在数据存储中指定。例如,app名称搜索功能可以选择以用户的查询开始的所有应用(例如,“从local_app_data中选择*,其中app_name如‘’”),并且排名可以基于一些本地数据或其他数据,例如“以last_time_opened降序方式排序”。特定的SQL查询可以由更新捆绑包更新以修改功能(例如,使用不同的列进行排名或使用不同的匹配过滤器)。在一些实现方式中,评分或排名函数可以被参数化,并且参数及其权重可以在数据存储中指定并由捆绑包更新。尽管在一些实现方式中,配置数据可能不改变模块的已定义软件组件的操作,但是在其他实现方式中,配置数据可以包括可配置的软件组件。

远程服务系统106可以例如响应于从更新模块108接收的请求向本地服务模块102发送更新。更新数据可以被包括在更新数据结构中,该更新数据结构在本文中可以被称为“更新捆绑包”或“捆绑包”。更新捆绑包可以包括要包含在本地数据中的更新的数据,诸如更新的搜索数据(例如,搜索记录、列表等)、广告数据(例如,包括查询、用户、ad、CTR估计、出价的可能的组合的ad记录)以及其他数据。更新捆绑包还可以包括可以由不同的模块(例如,搜索模块410和/或ad模块810)使用的更新的配置数据(例如,数据操纵命令)。因此,可以基于接收的更新捆绑包来配置本地服务模块102的操作和本地服务模块102操作的数据。提供更新功能可以有助于确保相关搜索结果、广告和其他新功能可以随着时间的推移被提供至已安装的本地服务模块。在一些实现方式中,更新可以是特定于用户的(例如,个性化的),使得不同的设备可以接收不同的更新。在其他实现方式中,更新可能不是特定于用户的(例如,可以是通用更新捆绑包)。在一些实现方式中,更新可能依赖于来自设备的匿名数据,诸如当前用户的地区或国家或语言设置。在一些实现方式中,更新可以被组织成组,使得同一组中的所有用户接收相同的更新。例如,组可以是地区、OEM、运营商、电话型号或其他组。在一些实现方式中,设备的属性与用户上下文的特定组合可以用于确定捆绑包(例如,用户国家和设备类型)。在一些实现方式中,捆绑包可以是基于组的部分捆绑包的组合。例如,用户可以接收他们的捆绑包的基于用户的地区的一部分以及他们的捆绑包的基于OEM的一部分。

本地服务模块102可以安装有初始配置(例如,默认/退回行为),在该初始配置中模块可以包括定义的软件组件功能。此外,本地服务模块102中包括的数据(例如,搜索数据、可配置数据等)可以处于初始配置。本地服务模块可以被配置成在初始启动时向远程服务系统106请求更新。在更新到当前配置之后,本地服务模块102可以根据更新的数据(例如,更新的搜索数据、ad数据、可配置数据等)来操作。在一些实现方式中,模块可以包括定义的退回功能,诸如定义的退回搜索和广告功能。本地服务模块102(例如,一个或更多个包括的模块)可以在更新或其他特征不正常工作的情况下使用定义的退回功能。

在一些实现方式中,本地服务模块102或其他应用可以对不同组件之间的数据使用施加限制,以维护用户隐私和特定于应用的数据分离。例如,在一些实现方式中,本地服务模块102可以提示用户给予记录用户数据和维护分析的许可。另外,本地服务模块102可以对用于进行搜索和广告的数据使用施加限制。例如,本地服务模块102可以限制用于进行广告和/或搜索的跨应用的数据使用。在特定示例中,在一些情况下,一个应用的用户数据可能不用于针对另一个应用的广告。

在一些实现方式中,更新模块108(例如,图15的捆绑包管理器)可以向远程服务系统106请求更新捆绑包。在一些实现方式中,更新模块108可以在请求中包括设备/用户ID以及/或者指示当前正在使用的捆绑包ID。在一些实现方式中,更新模块108可以包括关于捆绑包的另外的元数据,诸如捆绑包最后更新的时间。在一些实现方式中,更新模块108可以包括关于用户或设备的另外的元数据,诸如用户的当前地理位置、语言设置等。在一些实现方式中,更新模块108可以包括本地生成的数据,诸如预测的用户类别(例如,用户喜欢游戏)。远程服务系统106可以响应于该请求向用户设备发送更新捆绑包。更新模块108可以将更新的捆绑包数据集成到本地服务模块102中。

本地服务模块102可以具有在安装时提供的多种功能。在一些实现方式中,更新的捆绑包可以提供另外的功能。在一个示例中,更新捆绑包可以添加新的服务/特征,诸如新的搜索/ad特征、新的零状态服务/特征、查询提示服务/特征和/或自动建议服务/特征。例如,更新捆绑包可以指示如何生成搜索结果、如何呈现结果/ad以及如何触发零状态功能。

图14示出了可以向本地服务模块102提供更新的示例远程服务系统106-5。出于描述的目的,在图14中示出了远程服务系统106-5的选择组件。因此,未包括在图14中的另外的/替选的模块和数据存储可以包括在远程服务系统106中。远程服务系统106-5可以包括多个服务器数据存储,诸如服务器搜索数据存储418、服务器ad数据存储814和服务器更新数据存储1400。包括在远程服务系统106-5中的数据存储可以包括本文中描述的在更新中发送至用户设备的数据中的任何数据。例如,服务器数据存储可以包括搜索数据(例如,搜索记录、列表等)、广告数据(例如,ad记录)以及其他数据(例如,零状态数据、查询提示数据等)。服务器数据存储还可以包括可以由本地服务模块102使用的配置数据(例如,数据操纵命令)。

远程服务系统可以包括服务器更新模块1402,诸如生成包含在服务器数据存储中的数据的服务器数据生成模块1404(“数据生成模块1404”)。例如,数据生成模块1404可以生成服务器搜索数据418、服务器ad数据814和其他服务器数据。在一些实现方式中,数据生成模块1404可以基于获取的用户/分析数据生成聚合数据(例如,其他服务器数据)。远程服务系统106-5可以包括用于广告和用于大量应用的数据,其中的一些可以被安装在用户设备中的每一个用户设备上。远程服务系统106-5可以包括生成用于更新的捆绑包数据的更新捆绑包生成模块1406(“捆绑包生成模块1406”)。捆绑包数据可以存储在捆绑包数据存储1408中。捆绑包数据存储1408还可以包括指示捆绑包的内容和捆绑包的历史(例如,捆绑包日期、更新的数据等)的捆绑包元数据。

在一些实现方式中,捆绑包生成模块1406可以基于各种参数(诸如用户设备上的安装的应用的列表和/或用户设备上的应用/广告交互)为用户生成个性化更新捆绑包。为了对捆绑包进行个性化,远程服务系统106-5可以使用接收到的在捆绑包请求中的用户/设备ID,该用户/设备ID唯一地标识用户/设备以及相关联的服务器数据。在一些实现方式中,更新捆绑包可能被较少地个性化。例如,可以随时间生成并存储包括更新的数据的通用捆绑包。捆绑包生成模块1406可以响应于更新请求发送新的通用捆绑包。

在一些实现方式中,捆绑包生成模块1406可以通过动态地生成主要/仅包括与当前使用的捆绑包不同的数据的捆绑包来优化捆绑包的大小。捆绑包生成模块1406可以基于捆绑包ID和/或指示当前使用的捆绑包的内容的其他捆绑包元数据(诸如设备报告的最后更新捆绑包时间戳)来确定用户设备上当前使用的捆绑包的内容。在一些实现方式中,捆绑包生成模块1406可以通过向捆绑包id或捆绑包元数据添加信息来指定用户设备被分配至实验组。在一些实现方式中,捆绑包生成模块1406可以响应于带宽限制来优化(例如,最小化)捆绑包的大小。在一些实现方式中,为了使捆绑包大小最小化,捆绑包生成模块1406可以移除数据或者避免发送一些数据。在一些实现方式中,捆绑包生成模块1406可以利用压缩,包括在设备与服务器之间使用共享的字典。在一些实现方式中,捆绑包生成模块1406可以使用由设备共享的或者只由设备已知的密钥或秘密来对每个捆绑包进行加密。

远程服务系统106-5可以包括向用户设备提供捆绑包的通信模块1410。例如,通信模块1410可以从用户设备接收更新捆绑包请求,并且响应于该请求向用户设备提供更新捆绑包。另外地或替选地,远程服务系统106-5可以向用户设备推送更新。在一些实现方式中,远程服务系统106-5可以向实验组分配特定的用户或设备ID。捆绑包请求可以向远程服务系统106-5指定任何先前分配的实验组,以确保发送与分配的实验组相关联的正确数据。

本地数据模块424可以记录用户互动数据、生成分析数据并将分析数据提供至分析系统1310和/或远程服务系统106。示例分析可以包括但不限于搜索分析、ad分析、UI分析(例如,用户输入)、设备分析(例如,连接/电池状态)和其他服务分析。分析可以包括本文描述的任何事件——诸如由本地数据模块424以及其他模块(例如,零状态、查询提示和自动建议)获取的任何事件——的日志。在一些实现方式中,分析还可以包括记录的错误事件。在一些实现方式中,本地数据模块424可以压缩或聚合分析数据以供传送。在一些实现方式中,本地数据模块424可以接收设备事件,诸如用户已经启用了WiFi或者用户已经改变了他们的设备语言或默认区域。在一些实现方式中,本地数据模块424可以利用诸如差分隐私、安全聚合和/或散列的隐私增强算法。

分析系统1310和/或远程服务系统106可以从用户设备、搜索系统110、广告系统112和/或第三方数据提供方126接收分析。分析系统1310还可以向远程服务系统106(例如,搜索系统110和/或广告系统112)提供分析数据。远程服务系统106可以基于分析数据和其他用户数据来更新本文描述的服务器数据。

图15是本地服务模块102-9(诸如在启动器应用中实现的本地服务模块)的示例架构的功能框图。图15的示例功能框图示出了本地服务模块102-9的示例组件。例如,示例架构可以包括:捆绑包管理器模块1500(例如,加载器/处理器)、本地数据模块424-6、本地查询执行引擎1502(具有退回)、分析事件处理器1504、本地查询存储1506、本地(私有)数据存储1508、服务器同步数据1510以及一个或更多个捆绑包。在一些实现方式中,捆绑包可以包括要在用户设备上执行的SQL命令的集合。本地服务模块102-9可以包括诸如定时器的“捆绑包请求事件”,或者本地服务模块102-9可以是事件或时间表驱动的。捆绑包管理器1500可以(例如,经由因特网)向远程服务系统1606发出请求,该远程服务系统1606可以使用一个或更多个捆绑包进行响应。

在一些实现方式中,捆绑包管理器1500可以基于接收的捆绑包设置定时器或计划安排的重新加载(例如,接收的捆绑包可以要求在24小时内重新加载捆绑包)。可能存在多个捆绑包,每个捆绑包用于不同的服务(例如,ad、app搜索、零状态、提示等)。每个单独的服务可以具有其自己的用于加载/请求捆绑包的独立时间表。每个加载的捆绑包可以作为事务来执行。如果存在故障,则服务器同步状态可以被重置到捆绑包加载开始之前的状态,从而防止损坏。捆绑包可以确定服务器同步数据和本地查询存储的内容。

本地服务模块102-9可以基于各种事件或对本地OS功能的查询生成本地私有数据。事件或请求可以向本地数据模块提供原始数据作为输入,该本地数据模块可以处理该数据并生成/更新本地私有数据。与本地服务模块或其他应用相关联的用户动作(诸如输入查询、点击结果、滚动动作和/或其他动作)可以触发本地数据模块424-6以在本地数据中创建适当的记录。例如,如果用户点击搜索中的结果或者输入查询,则本地数据模块424-6可以更新私有表,诸如存储(添加到)点击和搜索历史。

在一些实现方式中,事件(例如,系统/设备事件)可以触发本地数据模块424-6。例如,如果用户安装应用,则这可以触发系统事件,该系统事件可以激活本地数据模块来更新与已安装的包对应的本地表。本地数据模块可以使用安装时间、应用的显示名称以及可以从显示名称生成的规范化名称来更新本地数据。除了触发本地数据模块424-6的事件之外,本地服务模块102-9可以定期地(事件驱动或计划安排)查询系统/OS功能。例如,每当用户打开应用(例如,启动器应用)或使用特定手势时,本地服务模块可以请求关于已安装的应用的最新的数据。这可以允许本地服务模块确保最新的信息总是可用和最近的。

本地查询存储1506可以用于确定各种设备端功能的搜索行为。本地查询存储中的每个条目可以指定id,诸如“本地搜索”或“ad”、“查询”(例如SQL)以及指定的一组绑定。当用户事件(例如,搜索、打开搜索应用等)触发搜索(例如,app名称搜索、零状态机会、提示机会、ad机会等)时,查询执行引擎1502可以从本地查询存储1506加载相应的查询(例如,特定的SQL查询和绑定)。绑定可以是“键名”数组,其中键名可以指用户、搜索和/或设备上下文的属性。顺序可以基于他们在要执行的SQL查询中的相对位置。例如,如果用户打开虚拟键盘并键入‘AMa’,则这可能触发app名称搜索和基于查询的ad搜索。app名称搜索可以加载与id“app_name_search”对应的SQLite查询和诸如(normalized_user_query、normalized_user_query、normalized_user_query、geo_lat、geo_lng、is_connected)的绑定。SQL查询可能涉及一些参数,并且每个参数可能与绑定中的条目对应。本地查询执行引擎1502可以通过使用来自用户/app上下文的其值填充绑定来执行SQL查询。上下文可以包括例如用户的设备信息或用户动作上下文,诸如is_connected(例如,如果因特网可用)或normalized_user_query等。在这种情况下,如果用户的设备当前连接至因特网,则normalized_user_query可以是‘ama’以及is_connected可以为“真”。并行地,相同的查询可以触发广告搜索。与app名称搜索类似,可能存在SQL查询以及绑定,可以填充这些绑定,然后执行查询。在这种情况下,id可能是“ad_search”。查询执行引擎1502可以是控制不同的结果生成子系统的执行的组件。基本流程可以是:响应于事件(例如,查询、向上滑动等),如上所述,从本地查询存储1506中选择并执行适当的查询,然后处理并呈现结果。此外,可以响应于事件和结果生成用于分析的数据。

查询执行引擎1502可以被配置成使用动态更新的查询(例如,SQL查询)和数据库/表。在一些情况下,可能会存在问题,诸如超时(例如,SQL查询缓慢)、错误查询或在尝试生成结果时的其他错误。为了确保用户的平稳体验,即使存在错误,也可能存在硬编码的最小功能退回机制。如果出现错误情况,则退回功能可以用于提供基本的app名称搜索功能。错误情况可以包括但不限于:超时/缓慢查询、内部OS错误(满存储或其他错误)、SQL错误(例如,无效查询、无效/不一致的绑定、数据触发的错误诸如查询不存在的表或列)、结果生成错误(例如,未能检查深度链接的有效性)以及任何未处理的异常或错误。

分析事件处理器1504可以负责接收可记录的事件数据/错误,并确保分析数据被正确地构造并发送至分析系统1310和/或远程服务系统106。在基于服务器的搜索系统110中,任何组件可以生成任意消息并即时在本地记录它们,这些消息可以在整个系统日志中被捕获。此外,用户活动(例如,所有用户活动)可以通过web URL或API请求来完成,使得它们被自动记录。在一些情况下,本地服务模块102可以在具有带宽和隐私限制的部分断开模式下操作。中央服务器可能无法知道用户动作,并且由于假设有限的连接和带宽,导致可能无法简单地将每个可记录的消息直接发送至常规的日志接收服务器。分析事件处理器1504可以接收数据/错误,并且每个事件可以被聚合、保持或排队,并且最终被发送至分析系统1310和/或远程服务系统106-6。

分析事件处理器1504可以执行以下功能:1)通过不同的API(包括trackClick、trackFailure以及其他)聚合消息;2)将消息格式化为分析载荷;3)当不存在连接或可允许的带宽用尽(例如,在蜂窝网络,而不是WiFi上)时,保持载荷;以及4)诸如在指定状况或事件(例如,设备连接至WiFi以及/或者电池超过75%电量)下,对事件进行批处理直至允许发送。分析事件处理器1504还可以执行分析数据库更新,以确保适当的事件(诸如点击、印象和请求)被保存到本地分析(私有)数据库中。在图15中,本地数据模块424-6可以包括分析事件处理器1504或馈入到分析事件处理器1504中。分析事件处理器1504还可以执行印象跟踪并监视系统状态(例如,WiFi、蜂窝数据、无因特网、缓慢连接等)以及带宽使用。分析事件处理器1504还可以对事件数据进行加密/编码,以防止拦截、强制执行隐私要求并确保不发送秘密信息(例如,使用过滤或其他规则)。

捆绑包生成模块1406可以负责收集新的服务器同步数据并在本地服务模块102请求捆绑包时将其构建成最终捆绑包。在由捆绑包生成模块1406管理的数据模型中,每个捆绑包可以包括捆绑包内容中的数据操纵命令可以修改的一个或更多个数据库。示例修改可以在SQLite兼容的SQL中定义,并且可以包括创建新的SQLite数据库和迁移语句(例如,用以创建、删除或改变数据库内的表的模式的命令)。可以创建新的表,或者可以移除现有的表。也可以建立新的索引。示例修改还可以包括数据更新语句,诸如用以在表中插入、删除或更新行的命令。除了数据库的数据模型之外,每个数据库可以包括关于本地服务模块102应当如何使用所述数据库的配置。所提供的远程配置可以包括设置如下项:1)应当被执行以执行任务(诸如处理app名称查询、显示相关ad或示出零状态)的SQL查询;2)本地服务模块应当从远程服务系统获得更新的数据库的频率的刷新间隔契约;以及3)本地服务模块在其下一次请求新的捆绑包时应当包括的数据版本签名。

构成每个捆绑包的数据库的数据更新语句的数据可以由一个或更多个数据提供方填充。这些数据提供方可以与捆绑包生成模块之外的其他数据源(例如,Python和Java服务以及数据存储)对接,然后将检索到的数据翻译成作为捆绑包数据模型的一部分的SQL命令。

捆绑包生成模块1406可以使用其从本地服务模块102接收的数据版本签名来为每个子数据库构建自该数据版本签名以来发生的数据库创建和迁移语句的列表。捆绑包生成模块1406还可以运行数据提供方获取命令中的每一个,并将数据聚合为SQLite SQL命令。捆绑包生成模块1406还可以聚合为每个数据提供方配置的最小预期刷新间隔和最大预期刷新间隔,并将该最小预期刷新间隔和最大预期刷新间隔设置为本地服务模块的预期刷新间隔。例如,ad提供方可能期望1小时的最小刷新间隔和24小时的最大刷新间隔。在该示例中,另一提供方(例如,实体提供方)可能期望6小时的最小刷新间隔和12小时的最大刷新间隔。在该示例中,所计算的针对该数据库的总体最小和最大刷新间隔可以是最小1小时和最大12小时。

为了保持本地服务模块更新一致,可以为对远程服务系统106的每次调用生成数据版本签名。这可以对关于数据库的版本和数据提供方的获取的数据的版本的信息进行编码。签名可以用于基于特定设备的数据版本签名生成针对该设备运行的迁移语句,并与远程服务系统106上可用的最新数据库迁移进行比较。例如,假设签名指示本地服务模块最后检索数据库的“版本5”,并且远程服务系统已知的最新版本是“版本8”。在这种情况下,远程服务系统可以组合来自“版本6”、“版本7”和“版本8”的命令以构建要运行的迁移语句的最终列表。

签名还可以用于存储关于本地服务模块上次从远程服务系统接收更新时的数据提供方的状态的元数据。针对数据提供方而可能包括的版本签名信息的一些示例可以包括设备区域设置信息或对设备状态的其他相关改变,诸如当设备区域设置从英语变为印地语时,提供语言特定信息的特定数据提供方可能想要在以新的语言提供新的服务器同步数据之前删除设备上的旧数据。针对数据提供方而可能包括的版本签名信息的另一示例可以包括最后一次捆绑包刷新的时间,该时间可以用于删除请求,使得在捆绑包在短时间窗口之前就已经在本地服务模块上被刷新的情况下,可以保存服务容量。

在一些实现方式中,系统可以在捆绑包请求与捆绑包服务器数据之间实现懒加载缓存。如果请求被量化(并被舍入到较早的时间),那么可能存在大量的请求重复,因此懒加载具有最少的实际服务器后端请求。作为选项,对于最后一次超过最大值的请求(或者对于第一次请求),远程服务系统可以发送预先生成的“具有删除旧数据的完整数据”捆绑包。

服务器更新模块可能受制于带宽限制(例如,限于每天1MB的蜂窝数据)。捆绑包生成模块1406可以将最大数据大小视为参数。服务器更新模块还可以被配置成针对“较早的/最后更新的”记录进行“批量删除”。例如,如果每行具有“最后接触的”版本/日期,则捆绑包生成模块1406可以通过使用时间戳来增加一致性并减少显式删除请求。同样,如果存在带宽限制,则远程服务系统可以优先处理最重要的数据。任何条目的重要性可能由许多因素决定,所述许多因素包括app/包的受欢迎程度或自上次更新以来评分的变化等。

本地服务模块102(例如,快捷方式模块1302)可以返回应用结果和/或快捷方式结果(例如,应用中的深度链接)。在一个示例中,当用户(例如,通过子串查询)搜索app时,本地服务模块102可以返回应用本身,诸如可以被选择以打开应用的用户可选择的图标链接。另外地或替选地,本地服务模块102可以将快捷方式返回到应用中。快捷方式可以是指应用的重要或受欢迎的状态或功能的深度链接。例如,如果用户搜索“ama”,则启动器可以返回Amazon Shopping应用链接(例如,以打开应用到主页)以及“查看购物车”、“过去订单”和“受欢迎电子产品”的快捷方式深度链接。作为另一示例,本地服务模块可以返回带有“流行歌曲”、“个人播放列表”或其他链接的深度链接(快捷方式)的亚马逊音乐。

在一些实现方式中,本地服务模块102可以被配置成处理应用名称意向查询并包括应用和已识别的应用的快捷方式结果。在设备端app名称搜索的上下文中,用例可能是用户正在查找他们使用的、当前安装在他们的设备上的应用。此外,用户可能期望只对单个字符查询就能找到结果。

可以通过本地服务模块来实现确定用户可能正在寻找哪个app(哪些app)以及每个app对于部分查询的可能性。本地服务模块app名称搜索实现方式可以实现以下项:1)考虑设备端获取的数据(例如,应用名称、用户交互点击/打开/过去搜索、其他app等)进行匹配和排名两者;2)考虑来自远程服务系统的远程同步数据以增强应用的匹配和排名;3)组合开发者和远程服务器发送的app快捷方式;4)在存在任何错误/缺陷的情况下使用退回;以及5)(例如,通过捆绑包)动态地更新设备端搜索/排名查询(SQLite SQL语句)并动态地修改基于远程同步数据生成的表。

现在描述可以由本地服务模块102提供的app意向搜索功能的示例实现方式。最初,用户可以输入查询,诸如一个字符或少量字符(例如,“am”)。然后,可以查询设备端本地数据(例如,应用数据)以寻找可能的匹配应用。这可以包括将用户的查询与每个应用的规范化显示名称进行比较,其中应用开发者可以设置显示名称。示例应用显示名称可能包括“谷歌地图-导航等”或“邮件”(用于三星电子邮件)。将用户的查询与可能的匹配应用进行比较可以包括寻找左锚定匹配。例如,以查询=“am”开头的规范化app名称将匹配名为“亚马逊购物(Amazon Shopping)”的app。其还可以包括匹配中间词的开头,因此“am”可以匹配“通过亚马逊进行购物(Shopping by Amazon)”或“我是谁?(Who am I?)”。其还可以基于从查询和应用名称中移除空格来匹配,因此用户对“you tu”的查询将匹配名为“youtube”的应用。类似地,用户对“eb”的查询可以匹配名为“e-bay”的应用。可以实现其他操作,包括任何地方的匹配,其中“hey”可以匹配名为“Who Are They”的应用以及名为“Hey DuggeeAdventures”的应用。

然后,可以在来自接收到的更新捆绑包的服务器同步应用数据中查找用户的规范化查询,其中用户的规范化查询可以匹配许多应用,并且可以对照已安装的应用的集合检查匹配的应用。服务器同步数据可以包括替选项(例如,“fb”→“Facebook”,“pau”→“PayTM”)。服务器同步数据可以基于聚合的用户行为,诸如如果许多用户键入“pau”,则将其更正为“pay”,然后选择PayTm app而在远程服务系统处被构建。人工编辑也可以生成替选项。也可以使用其他算法,诸如拼写校正、缩写词生成等。

候选app的集合可以是从被过滤以包括已安装的应用的本地服务器同步的应用数据和本地获取的数据中匹配的应用的联合。候选app可以被放入桶/组中。用于对app进行分组/分桶的常见特征可以包括但不限于:1)交互的新近度(例如,过去7天在桶B1中,以及更早的在桶B2中);2)匹配的类型(例如,以桶B1开头,以中间词开头进行的匹配是桶B2,以及其他的都是桶B3);以及3)应用受欢迎程度,其中受欢迎的应用(例如,由服务器同步数据确定以及/或者根据用户交互生成)可以在桶B1中,而不太受欢迎的应用可以在桶B2中。

然后,可以对每个候选进行评分。评分可能取决于组。例如,可以基于交互的新近度对桶B1进行评分,并且可以基于应用的受欢迎程度对B2进行评分。评分可以利用本地获取的数据以及来自服务器同步数据的数据两者。可以考虑匹配的类型。例如,与和词的中间部分进行的匹配相比,“以开头进行的匹配”可以被给予较高的评分(或者被放入较好的桶中)。在一些情况下,服务器同步数据可以指定“匹配的类型”诸如“拼写错误”,以及/或者可以提供与“匹配的类型”相关的特定评分。评分中的示例因素可以包括但不限于:1)设备端交互的新近度(例如,用户上次打开app的时间);2)应用的安装的新近度(例如,更近安装的应用可以排名更高);3)交互的频率(例如,过去7天中打开的次数);4)使用应用所花费的时间(例如,过去7天中打开应用的小时数);5)应用受欢迎程度,其可以基于聚合的用户行为在远程搜索系统上被生成,并且可以按照用户位置进行修改(例如,PayPal应用在美国可能比在印度更受欢迎);6)来自服务器同步数据的特定于查询的意向评分,该特定于查询的意向评分可以基于用户行为或其他数据被生成(例如,与“fca”对FCAbank相比,“fca”→“Facebook”可能评分较低,但是与“fac”→FCABank相比,“fac”→Facebook可能具有较高的评分);以及7)应用趋势评分,其中与绝对更受欢迎但趋势向下的应用相比,不太受欢迎的应用可能是趋势并且可能获得较高评分。

在每个组内,然后可以根据评分对应用进行排名/排序。在一些实现方式中,可以基于特征、排名等滤除应用。在一些实现方式中,对于0个或更多个应用,可以合并应用快捷方式。

快捷方式可以来自多个源。例如,快捷方式可能来自设备端开发者(app)生成的快捷方式,并且可能包括静态或动态链接。例如,如果用户打开Yelp应用并搜索素食餐馆,则Yelp可能会添加快捷方式“我附近的素食餐馆”。在一些实现方式中,快捷方式可以是服务器生成的。受欢迎的、趋势的、重要的和/或个性化的快捷方式可以在远程服务系统106上被生成,然后在更新捆绑包中被发送。这些可以包括与保存的或与用户活动相关的动作对应的深度链接。快捷方式可能包括用户交互的实体/深度链接。例如,用户可以在搜索中采取行动(例如,搜索“bagels”),然后点击“Bagel Barn”的Yelp结果,其中该链接然后可以被视为快捷方式。

启动器1300可以以与对应用搜索进行个性化相似的方式对快捷方式进行个性化。个性化可能基于许多因素。例如,可以相应地对用户交互(例如,个性化以及聚合两者)快捷方式进行选择、过滤和/或排名。快捷方式排名/选择可以基于各种特征,这些特征可以包括但不限于:1)用户最后一次点击快捷方式的时间;2)用户点击快捷方式的频率;以及3)用户如何通过快捷方式进行交互。例如,在亚马逊应用中,如果用户搜索鞋,然后点击“耐克鞋”,则下次搜索“am”时,该快捷方式可能会被选择和/或提升。关于快捷方式评分的服务器同步数据可以包括受欢迎程度评分。评分可以是聚合的用户交互(绝对或相对)的函数。例如,如果大量用户点击耐克鞋的亚马逊购物快捷方式,则该快捷方式可能会获得高评分。在另一示例中,应用的“开始新游戏”快捷方式可能因为在过去一周被点击10次而得到提升。本地服务模块102-8还可以考虑及时性、新鲜度和趋势因素。例如,最近的新闻文章可能比来自上周的新闻得到更多的提升。作为另一示例,与不太流行/受欢迎的快捷方式相比,受欢迎或流行的快捷方式/内容可能会得到提升。可以基于过去的交互的属性对快捷方式进行选择和/或评分(例如,出于隐私目的,此处可以使用仅设备端数据)。例如,如果用户频繁点击棒球应用中带有标签“体育新闻”的快捷方式,则来自“我的商业新闻App”的带有标签“体育新闻”的快捷方式可能会得到提升。

在对快捷方式进行选择和评分之后,可以存在可以将快捷方式包含/显示在UI(例如,启动器或其他应用UI)中的多种方式。在某些情况下,仅显示排名靠前的应用的快捷方式。在某些情况下,如果匹配到多于N个应用,则可能不显示快捷方式。例如,匹配15个app的查询“a”可能不显示任何快捷方式,但是匹配三个应用的查询“amazon”可能显示快捷方式。快捷方式的评分可以决定显示多少快捷方式以及显示哪些快捷方式。例如,启动器可以具有查询“a”,该查询“a”具有亚马逊购物(第1)和惊人的冒险(Amazing Adventures)(第2)以及亚马逊音乐(第3)(例如,可以通过用户的最后交互来排名)。如果亚马逊音乐的“恢复播放Helter Skelter”的评分为100,“检查订单状态”的评分为90,以及“耐克鞋”的评分为25,则启动器可以为亚马逊购物和亚马逊音乐中的每一个各显示一个快捷方式。

在一些实现方式中,本地服务模块102可以实现零状态功能(例如,使用图13的零状态模块1304)。通常,零状态功能可以在没有用户输入搜索查询的情况下实现。换言之,在不输入任何搜索查询的情况下,用户可以以各种方式体验零状态功能。例如,用户可以体验作为查询提示和零状态链接的零状态功能。查询提示(即,提示)可以指如下短语:该短语在被用户选择(例如,触摸/点击)时可以将用户重新引导到搜索体验,就像用户查询和搜索了该短语一样。零状态链接可以包括来自搜索栏的可能的搜索结果,诸如应用快捷方式或应用中的特定文章或页面。点击链接可以将用户重新引导至该链接的应用快捷方式或应用中的特定文章或页面。服务器可以填充零状态功能的数据并使其同步,并且本地服务模块102(例如,零状态模块1304)可以使用本地设备端数据来对应当向用户显示的内容进行个性化。零状态功能可以以各种方式——诸如在后台中、在屏幕上的窗口小部件上、响应于用户手势(例如,向上滑动)、设备闲置一段时间和/或屏幕在没有互动的情况下打开一段时间——触发。用于零状态功能的触发器在本文中可以被称为“零状态触发器”。

零状态功能可以包括下文中描述的各种特征。在一些实现方式中,零状态功能可以考虑设备端数据以用于排名(例如应用名称、包括点击/打开/过去搜索的用户交互、其他安装的应用等),并考虑“远程服务器(非个性化)”同步数据以增强查询提示和零状态链接的排名。零状态功能可以包括用于零状态链接的组合的开发者和远程服务器发送的app快捷方式。在一些实现方式中,零状态功能可以(例如,经由更新捆绑包)动态地更新设备端搜索/排名查询(SQLite SQL语句)并且动态地修改基于远程服务器数据生成的表。

在一些实现方式中,可以从远程服务系统106同步查询提示,该远程服务系统106可以具有未个性化的建议的应用的列表和将显示这些应用的内容的建议的查询字符串。示例提示可以是“zee5电视节目”。如果用户点击该建议的查询,他们可能会被带到搜索集成,并且被示出zee5应用中的内容的搜索结果。在设备端,这些示例考虑可以用于确定要显示哪些查询提示:1)将可能的服务器同步提示限于设备当前已经安装的应用;2)提升对具有最近交互的应用的偏好;3)如果存在3个或更多个具有提示并且具有最近交互的应用,则显示3个最近使用的应用的随机提示;以及4)对于总共多达3个的应用的任何剩余应用,包括随机应用和该应用的随机提示。

远程服务系统106可以使用各种源来填充和创建可以发送至本地服务模块102的查询提示的列表。例如,源可以包括但不限于:1)手动编策的受欢迎内容搜索查询的列表;2)手动选择的感兴趣的内容;3)来自趋势内容的标题的自动生成的查询提示;4)来自所有内容的标题的受欢迎搜索词;以及5)基于应用使用的个性化提示。在特定示例中,关于基于应用使用的个性化提示,经常打开亚马逊购物车的用户可以被提供特定于该动作的提示,诸如“亚马逊-购物车”。作为另一示例,可以向经常玩游戏的用户给出“玩游戏”的提示。

零状态链接可以从远程服务系统106同步,该远程服务系统106可以具有建议的应用和这些应用的链接的个性化列表,然后零状态链接与关于应用快捷方式的设备端信息相结合以确定在用户第一次互动时向用户显示的最佳链接集合。零状态链接可以包括显示数据(例如,图像、显示标题等)和链接信息,以供用户查看内容以及与内容互动(例如,选择内容)。以这种方式,零状态链接可以不同于提供建议的查询字符串的查询提示,所述查询提示可能需要用户在看到内容之前进行选择(例如,触摸/点击)。

可以使用设备端的以下示例过程中的一个或更多个来选择零状态链接以进行显示:1)将可能的服务器同步链接限于设备当前已安装的应用;2)将这些服务器同步链接与由本地服务模块102发现的设备端的快捷方式相结合;3)提升对具有最近交互的应用的偏好;4)基于链接信息的源提升对链接的偏好,其中可能的排名是偏好的远程同步内容链接而不是本地快捷方式链接;5)使用最近的交互和链接源偏好来随机地选择几个(例如,3个)应用,其中每个应用具有1个链接;以及6)根据app受欢迎程度、交互的新近度(使用设备端私有数据)、交互的频率(使用设备端私有数据)和/或链接/快捷方式的受欢迎程度(例如,设备端私有数据或服务器聚合的数据)来选择应用和/或每个应用的大量结果。

远程服务系统106可以使用各种源来填充和创建发送至本地服务模块102的零状态链接的列表。示例源可以包括但不限于:1)手动编策的受欢迎的链接的列表;2)通过分析具有跟踪交互的应用的个性化源,3)来自由搜索集成使用的内容系统(例如,内容弹性搜索系统)的内容结果的过滤选择;4)受欢迎趋势内容;以及5)主动web爬取系统。

在一些实现方式中,本地服务模块102(例如,自动建议模块1308)可以提供自动建议功能。自动建议可以向用户的当前查询字符串提供查询建议。图17示出了示例自动建议GUI。在一些实现方式中,当用户在搜索栏中键入查询时,远程服务系统106可以运行自动建议。在一些实现方式中,自动建议可以由具有搜索内容的应用知识来支持,以构建建议的查询。补全的类型可以包括但不限于:1)应用名称补全:“ama”→“amazon”;2)应用开发者快捷方式补全:“亚马逊”→“亚马逊订单”;3)应用导航快捷方式补全:“limeroad”→“limeroad女装”;4)应用名称拼写错误:“amz”→“amazon”;和/或5)内容补全:“冠状病毒”→“冠状病毒19”。

自动建议可以由具有搜索内容的意向应用知识来支持,以构建与用户查询匹配的补全。意向数据可以指用户app名称意向查询的预测意向(例如,“am”和用户想要的AmazonShopping)。可以使用每月活跃用户(MAU)或基于服务器互动的用户行为数据来构建数据。此外,诸如重写的查询行为可以用于发现新的映射(例如,“ana”→“ama”→点击亚马逊购物)/对其进行评分。

本地服务模块102的上下文中的自动建议可以考虑用户的上下文以及用户可能正在使用app名称搜索栏的事实。在自动建议中,用户的查询可以被发送至远程服务系统106,然后可以做出建议。在一些实现方式中,本地服务模块102可以使用本地数据对自动建议的建议进行重新排名。在一些实现方式中,自动建议结果可以与元数据(诸如app-id、标签或评分)一起发送。本地服务模块102可以基于用户的本地数据来修改排名(例如,显示最近使用的app相对于非最近使用的app的类型“趋势”的结果更高)。自动建议也可以以多种方式修改,诸如:1)对远程服务系统106的自动建议请求可以包括用户上下文,包括最近使用的app的列表;2)自动建议也可以对应用列表进行编码(例如,作为布鲁姆(Bloom)过滤器),使得实际安装的应用不被已知/发送,但是允许远程服务系统106处的有限个性化;以及/或者3)自动建议可以使用关于最近交互的远程服务器知识来修改排名。

分析系统1310和/或远程服务系统106可以获取从本地数据模块424(例如,分析事件处理器模块1504)发送的数据,并将原始数据转换为有助于扩展产品/业务操作的有用的数据产品。在一些实现方式中,在具有带宽和隐私限制的情况下,本地服务模块102和分析系统1310可以在部分断开模式下使用。在一些情况下(例如,由于连接性),可能无法将每个可记录的消息直接发送至分析系统1310。此外,一些组件可能经历对远程服务器的呼叫(call out)(例如,自动建议)。这可能创建多个不同的数据源,以在进行分析时从中解析。在这些情况下,可以将来自单独维护和结构化的产品(自动建议)的日志与来自分析事件处理器1504的日志合并。在某些情况下,事件可能不同步。例如,由于不佳的网络和带宽限制,分析系统1310可能在不同时间接收关于同一事件的分析日志。例如,如果用户在晚上7:59查询“flip”,那么该用户在其网络从晚上8点开始中断30分钟的情况下可能接收到晚上8点处的针对查询“f”和“fl”的1组日志。在发送这些日志之后,该用户将接收到针对在8:30发送至服务器的“fli”和“flip”的消息。分析系统1310可能仍然需要解析这两个事件,并将它们作为来自用户的相同搜索的一部分进行协调。

分析系统1310可以负责消耗由上述多个组件发出的日志,并确保将这些日志转换成实用程序,该实用程序允许以高度信任、隐私保护、自我服务的方式分析产品性能、用户交互和未来产品开发机会。一旦数据由每个组件(包括基于服务器的组件(例如,自动建议)和基于设备的组件(例如,应用名称搜索或零状态))发出,则分析系统1310可以将该数据虹吸到中央数据处理单元,其中系统自动地执行以下操作:1)根据用户设置去除任何个人可识别信息;2)使用隐私防护/保护用户标识符来替换任何设备生成的用户标识符,从而确保用户不会被重新识别(例如,由内部雇员);以及3)使用关于由用户完成的事件的粒度元数据和关于用户的派生信息来丰富隐私保护的用户身份图。关于用户的数据可以是先前的印象/点击的时间戳和在一段时间内完成的互动的次数(例如,根据时间表清除)。示例事件可能包括购买、点击、app打开等。系统可以存储关于用户的派生信息,诸如他们对某些类别的内容的亲和力、他们的使用生命周期阶段(例如,新用户与高级用户)、他们的偏好(例如,他们的地区、语言偏好等)以及他们被分配的群组和组(例如,告知该用户是否接受通过实验进行的处理的布尔标志)。数据还可以包括用户在任何给定时间/时间范围涉及了哪个实验(哪些实验)(例如,App名称搜索捆绑包构建器在7月4日发送实验数据ID:AN3334,而正常数据在7月8日被发送…)。

图16至图17示出了可以由包括本地服务模块以及/或者从本地服务模块接收数据的应用(例如,启动器应用)生成的示例GUI。图16示出了示例零状态功能。例如,在没有在搜索查询框1600中输入搜索查询的情况下,本地服务模块已经提供了“gmail新消息”和“chrome web商店”的查询提示1602。查询提示的选择可以导致针对查询执行搜索。除了查询提示之外,启动器GUI还提供了4个建议的应用的列表:Fake GPS、ExpressVPN、地图(Maps)和Slack。对建议的应用链接的选择可以在用户设备100上启动应用。

图17示出了另外的示例本地服务模块功能。在图17中,用户已经将部分查询“ma”输入到搜索查询框1700中。响应于部分查询,本地服务模块已经提供了自动建议查询1702,该自动建议查询1702包括:gmail、地图、消息(messages)和mahavitaran。此外,本地服务模块提供了对打开地图应用的快捷方式。在图17中,示出了四个示例快捷方式1704。“地图”快捷方式可以将地图应用打开到应用主页。对其他链接(例如,工作(Work)、家(Home)或回家的方向(Directions to Home))的选择可以将地图应用打开到由快捷方式链接限定的特定应用页面。示出了进入Gmail应用的另外的示例快捷方式1706。对Gmail链接的选择可以将Gmail应用打开到应用主页。对新消息(New Message)链接的选择可以将Gmail应用打开到准备起草新电子邮件消息的状态。图17的示例快捷方式链接1704、1706可能已经由开发者提供以及/或者在用户设备100上确定(例如,基于用户行为)。

图18示出了示例远程服务系统1800和N组用户设备1802-1、1802-2、……、1802-N(统称为“用户设备组1802”)。用户设备组1802可以表示与不同操作系统、不同蜂窝运营商、不同OEM和/或其他方/特征相关联的用户设备。例如,组1 1802-1可以包括为第一OEM设备(例如,第一制造商)执行第一OS(例如,Android)的设备。在该示例中,组2 1802-2至组N1802-N可以包括为其他OEM(例如,其他制造商)执行第一OS(例如,Android)的设备。

如本文所述,初始配置中的本地服务模块1804(例如,“初始本地服务模块”)可以在客户获取之前或之后提供至不同的设备组1802。在一些实现方式中,包括相同功能的相同初始本地服务模块可以被提供至不同的用户设备组1802。在其他实现方式中,具有不同功能的不同初始本地服务模块可以被提供至用户设备组1802。在一些情况下,用户设备组1802可以提供相同的通用功能(例如,搜索和广告),但是包括使用不同算法和/或数据来提供功能的模块(例如,搜索/ad模块)。

在一些情况下,远程服务系统1800可以向用户设备组提供相同的更新,使得不同的设备组可以随着时间的推移执行具有相同功能的本地服务模块。在一些情况下,远程服务系统1800可以向不同的设备组提供不同的更新。在这些情况下,由不同的设备组提供的功能可能不同,即使在这些组可能以相同的初始本地服务模块开始的情况下。在一些情况下,更新可以包括相同的通用功能(例如,搜索和广告)的更新,但是提供不同的算法和/或数据。

在一些实现方式中,远程服务系统1800可以维护不同的设备组和/或功能的孤立数据(例如,组1数据至组N数据1806-1、1806-2、……、1806-N)。在一些实现方式中,远程服务系统1800可以跨设备组和功能共享数据(例如,共享数据1808)。例如,在远程服务系统1800处从来自不同组的多个设备获取的搜索数据可以被共享并用于更新不同组中的搜索功能。跨不同设备组共享数据可以使来自不同组中的每个组的设备受益。例如,跨设备组的共享搜索数据(或其他数据)可以增强各个组中的每个组的搜索功能(例如,搜索相关性),这是因为共享数据可以提供对聚合用户搜索行为和预期(例如,不同查询的预期结果)的额外洞察。在特定示例中,共享的搜索数据可以有助于改进设备组使用的搜索算法。其他共享数据也可以有助于改进本地服务模块的其他功能。例如,共享的广告数据(例如,ad性能数据)可以有助于改进广告功能的广告选择算法。

本文所述的数据结构(例如,搜索记录和广告记录)和数据存储仅为示例数据结构和数据存储。因此,本文描述的设备和系统可以使用另外的/替选的数据结构和数据存储来实现本公开内容的技术。

系统和设备中包含的模块和数据存储代表可以包括在本公开内容的系统和设备中的特征。本文描述的模块和数据存储可以通过电子硬件、软件、固件或它们的任意组合来实施。将不同特征描绘为分开的模块和数据存储不一定意味着模块和数据存储是由共同的电子硬件或软件组件还是由分开的电子硬件或软件组件来实施。在一些实现方式中,与本文中描绘的一个或更多个模块和数据存储相关联的特征可以通过共同的电子硬件和软件组件来实现。在一些实现方式中,与本文中描绘的一个或更多个模块和数据存储相关联的特征可以通过分开的电子硬件和软件组件来实现。

模块和数据存储可以由包括但不限于一个或更多个处理单元、一个或更多个存储器部件、一个或更多个输入/输出(I/O)部件以及互连组件的电子硬件和软件组件来实施。互连组件可以被配置成提供一个或更多个处理单元、一个或更多个存储器部件以及一个或更多个I/O部件之间的通信。例如,互连组件可以包括被配置成在电子部件之间传送数据的一条或更多条总线。互连组件还可以包括被配置成控制电子部件之间的通信的控制电路(例如,存储器控制器和/或I/O控制器)。

一个或更多个处理单元可以包括一个或更多个中央处理单元(CPU)、图形处理单元(GPU)、数字信号处理单元(DSP)或其他处理单元。一个或更多个处理单元可以被配置成与存储器部件和I/O部件通信。例如,一个或更多个处理单元可以被配置成经由互连组件与存储器部件和I/O部件通信。

存储器部件(例如,主存储器和/或存储设备)可以包括任何易失性或非易失性介质。例如,存储器可以包括但不限于电介质、磁性介质和/或光学介质,例如随机存取存储器(RAM)、只读存储器(ROM)、非易失性RAM(NVRAM)、电可擦除可编程ROM(EEPROM)、闪存、硬盘驱动器(HDD)、磁带驱动器、光学存储技术(例如光盘、数字通用光盘和/或蓝光光盘)或任何其他存储器部件。

存储器部件可以包括(例如,存储)本文所述的数据。例如,存储器部件可以包括包含在数据存储中的数据。存储器部件还可以包括可以由一个或更多个处理单元执行的指令。例如,存储器可以包括计算机可读指令,所述计算机可读指令在由一个或更多个处理单元执行时使一个或更多个处理单元执行归属于本文中所述的模块和数据存储的各种功能。

I/O部件可以是指提供与各种不同设备的通信的电子硬件和软件。例如,I/O部件可以提供在其他设备与一个或更多个处理单元和存储器部件之间的通信。在一些示例中,I/O部件可以被配置成与计算机网络通信。例如,I/O部件可以被配置成使用各种不同的物理连接、无线连接和协议,通过计算机网络交换数据。I/O部件可以包括但不限于网络接口部件(例如,网络接口控制器)、中继器、网桥、网络交换机、路由器和防火墙。在一些示例中,I/O部件可以包括被配置成与各种人机接口设备进行通信的硬件和软件,各种人机接口设备包括但不限于显示屏幕、键盘、指针设备(例如,鼠标)、触摸屏幕、扬声器和麦克风。在一些示例中,I/O部件可以包括被配置成与诸如外部存储器(例如外部HDD)的附加设备通信的硬件和软件。

在一些实现方式中,系统可以包括被配置成实现本文所述的技术的一个或更多个计算设备。换言之,可以通过一个或更多个计算设备实现归属于本文中描述的模块和数据存储的特征。一个或更多个计算设备中的每一个可以包括上面描述的电子硬件、软件和/或固件的任何组合。例如,一个或更多个计算设备中的每一个可以包括上述处理单元、存储器部件、I/O部件和互连组件的任何组合。系统的一个或更多个计算设备还可以包括各种人机接口设备,包括但不限于显示屏、键盘、定点设备(例如,鼠标)、触摸屏、扬声器和麦克风。计算设备还可以被配置成与诸如外部存储器(例如,外部HDD)的附加设备通信。

系统的一个或更多个计算设备可以被配置成与网络120通信。系统的一个或更多个计算设备也可以被配置成彼此通信(例如,经由计算机网络)。在一些示例中,系统的一个或更多个计算设备可以包括被配置成与用户设备通信的一个或更多个服务器计算设备。在一些示例中,一个或更多个计算设备可以驻留在单个地理位置处的单个机器内。在其他示例中,一个或更多个计算设备可以驻留在单个地理位置处的多个机器内。在另外的示例中,系统的一个或更多个计算设备可以跨多个地理位置分布。

相关技术
  • 使用应用元数据和客户端更新使能远程受管应用的执行
  • 更新仪表固件的系统和方法及具远程固件更新功能的电表
技术分类

06120115986863