相关申请
本国际申请要求2015年8月4日提交的题为“enhancedsearchquerysuggestions”的美国专利申请no.14/818,034的优先权,该申请要求了2014年9月11日提交的题为“systemsandmethodstoenhancesearchquerysuggestions”的美国临时申请序61/049,271的优先权,通过引用将这两个申请的全部内容并入本文。
本公开的实施例总体涉及生成搜索查询建议,更具体但不作为限制地,涉及增强搜索查询建议。
背景技术:
通常,搜索查询包括在用户正在将搜索查询输入搜索栏时提供给用户的搜索查询建议。在某些系统中,搜索查询建议被称为“自动完成(autocomplete)”。搜索查询建议可用于通过建议存储在搜索系统中的搜索查询来填充和制定搜索查询。例如,可以通过建议存储在搜索系统中的流行且众所周知的搜索查询来填充搜索查询建议。搜索查询建议经常将搜索系统确定建议的用语表示为与输入到搜索查询的用语或部分用语相关。搜索系统通常使用全局评分函数来评估搜索查询相对于所有用户的整体性能,以对搜索查询中使用的特定用语或用语集的流行度和效率进行排名。
附图说明
各个所附附图仅示出了本公开示例实施例,并且不被认为限制其范围。
图1是示出了根据一些示例实施例的联网系统的框图。
图2是根据各种实施例的示例搜索增强系统的框图。
图3是示出了根据各种示例实施例的用于生成和提供搜索查询建议集合的示例方法的流程图。
图4是示出了根据各种示例实施例的用于生成和提供搜索查询建议集合的示例方法的流程图。
图5是示出了根据各种示例实施例的用于生成和提供搜索查询建议集合的示例方法的流程图。
图6是示出了根据各种示例实施例的用于生成和提供搜索查询建议集合的示例方法的流程图。
图7是示出了根据各种实施例的示例的基于网络的发布系统的组件的框图。
图8是示出了根据各种实施例的可以安装在机器上的软件架构的示例的框图。
图9是示出了根据各种实施例的高层实体关系图的框图。
图10示出了根据示例实施例的具有计算机系统的形式的机器的示图表示,在所述计算机系统中,可以执行一组指令以使所述机器执行本文讨论的方法中的任意一个或多个方法。
此处提供的标题仅为方便起见,而不一定影响所使用的术语的范围或含义。
具体实施方式
以下描述包括体现本公开的示意性实施例的系统、方法、技术、指令序列和计算机器程序产品。在下文的描述中,为了解释的目的,阐述了很多细节以提供对本发明主题的各种实施例的理解。然而,本领域技术人员将显而易见的是,本发明主题的实施例可以在没有这些具体细节的情况下实施。一般地,不必详细示出众所周知的指令实例、协议、结构和技术。
搜索查询建议,也称为自动完成,是任何搜索系统的重要组成部分。自动完成功能通过建议来自搜索系统的流行且众所周知的搜索查询来帮助用户快速填充和制定搜索查询。这样的系统有助于减少用户不便,并帮助用户更快地收敛到有意义的搜索查询,从而获得令人满意的搜索结果。
在各种示例实施例中,搜索查询建议由搜索增强系统基于用户输入的先前搜索查询而被增强和针对用户个性化。搜索增强系统用于增强搜索查询建议的方法和系统可以利用用户的过去搜索查询对标准搜索查询建议进行修正(例如,扩展、删除和重新排名),以便带来更相关且个性化的搜索查询建议。通过用户的过去搜索已经捕获了用户在如品牌、尺寸、性别等若干方面上的偏好。使用此信息和修改标准搜索查询建议以考虑这样的隐含偏好可能会使用户高兴,并减少她快速达到相关搜索查询的时间。例如,如果用户先前输入过搜索查询“gucci手提包”,则响应于在搜索框中键入“皮带”,可以显示“gucci皮带”的搜索查询建议。
搜索增强系统可以使用全局评分函数,其评估搜索查询相对于所有用户的整体性能,以对其流行度和效率进行排名。例如,在一些实施例中,搜索增强系统使用mostpopularcompletion的高级版本,通过在全球历史中的流行度对所有查询进行排名。基于流行度计算模型(全局评分函数的一部分)对每个历史查询进行索引和评分。频率和其他方面被纳入流行度计算。搜索增强系统可以在将一个或多个搜索用语或部分用语输入到数据输入栏中时,使用用户先前输入的搜索查询来修改全局评分函数所提供的建议搜索查询用语的集合。搜索系统的用户对搜索查询具有自己的偏好和意图,这些偏好和意图或者因为它们的特殊性或者因为缺乏流行性而可能无法通过这样的全局评分函数被捕获。例如,更一般的搜索查询“nikeair”可能比具体搜索查询“nikeairsize8.5”更流行/有用。由用户先前的搜索查询对全局评分函数提供的建议搜索查询用语的修改可以生成反映用户的偏好和意图的搜索查询建议。
本文档的其余部分概述了通过利用用户过去的搜索查询来捕获他们的个人偏好从而增强搜索查询建议的方法和系统。本文档还概述了在搜索查询建议系统中如何使用这些数据来展示更个性化和相关的搜索查询。
参考图1,示出了高级的基于客户端-服务器的网络架构100的示例实施例。具有基于网络的发布系统或支付系统的示例形式的联网系统102经由网络104(例如互联网或广域网(wan))向一个或多个客户端设备110提供服务器侧功能。图1示出了例如在客户端设备110上执行的web客户端112(例如浏览器,比如由华盛顿州雷德蒙德市的微软公司开发的internetexplorer浏览器)、应用114和编程客户端116。
网络架构100用于执行本文档中描述的方法中的任意一个。客户端设备110可以包括但不限于:移动电话、台式计算机、膝上型计算机、便携式数字助理(pda)、智能电话、平板计算机、超级本、上网本、笔记本计算机、多处理器系统、基于微处理器或可编程的消费电子产品、游戏机、机顶盒或用户可以用来访问联网系统102的任何其他通信设备。在一些实施例中,客户端设备110包括显示模块(未示出)以显示信息(例如,以用户界面的形式)。在另一些实施例中,客户端设备110包括触摸屏、加速度计、陀螺仪、相机、麦克风、全球定位系统(gps)设备等中的一个或多个。客户端设备110可以是用于执行涉及联网系统102内的数字项目的交易的用户设备。在一个实施例中,联网系统102是对针对产品列表的请求进行响应的基于网络的发布系统,其发布包括在基于网络的发布系统上可获得的产品的项目列表在内的公告,并且管理与基于网络的发布系统有关的交易的支付。在一些实施例中,与产品列表和发布有关的动作可被理解为对数字商品的管理。网络104的一个或多个部分可以是adhoc网络、内联网、外联网、虚拟专用网(vpn)、局域网(lan)、无线lan(wlan)、广域网(wan)、无线wan(wwan)、城域网(man)、互联网的一部分、公共电话交换网(pstn)的一部分、蜂窝电话网、无线网络、wifi网络、wimax网络、另一类型的网络或两个或更多个这样的网络的组合。
每个客户端设备110可以包括一个或多个应用114(又称“app”),例如但不限于web浏览器、消息应用、电子邮件(email)应用、电子商务网站应用(又称发布应用)等。在一些实施例中,如果电子商务网站应用被包括在客户端设备110中的给定一个中,则该应用114被配置为本地提供用户界面以及至少一些功能,其中应用114被配置为根据需要与联网系统102通信,以获得本地不可获得的数据或处理能力(例如,访问可供销售的物品的数据库、认证用户106、验证支付方法等)。相反,如果电子商务网站应用114未被包括在客户端设备110中,则客户端设备110可以使用其web浏览器来访问联网系统102上容纳的电子商务网站(或其变型)。
一个或多个用户106可以是人、机器或与客户端设备110交互的其他装置。在示例实施例中,用户106不是网络架构100的一部分,但可以经由客户端设备110或其他装置与网络架构100进行交互。例如,用户106向客户端设备110提供输入(例如,触摸屏输入或字母数字输入),并且该输入经由网络104传送给网络系统102。在该实例中,联网系统102响应于接收到来自用户106的输入,经由网络104将信息传送给客户端设备110以呈现给用户106。以这种方式,用户106可以使用客户端设备110与联网系统102交互。
应用程序接口(api)服务器120和web服务器122耦合至一个或多个应用服务器140,并分别向一个或多个应用服务器140提供编程和web接口。应用服务器140可以主控(host)一个或多个发布系统142和支付系统144,发布系统142和支付系统144中的每一个可以包括一个或多个模块或应用,并且其每一个可以实现为硬件、软件、固件或它们的任意组合。相应地,应用服务器140被示为耦合到一个或多个数据库服务器124,所述数据库服务器促进对一个或多个信息存储库或数据库126的访问。在示例实施例中,数据库126是存储要张贴到发布系统142的信息(例如,发布或列表)的存储设备。根据示例实施例,数据库126还可以存储数字项目信息。
另外,在第三方服务器130上执行的第三方应用132被示为具有经由api服务器120提供的编程接口对联网系统102的编程访问权。例如,第三方应用程序132利用从联网系统102检索的信息,支持第三方所主控的网站上的一个或多个特征或功能。例如,第三方网站提供由联网系统102的相关应用支持的一个或多个促销、市场、发布或支付功能。第三方服务器130可以主控外部站点134和136。外部站点134和136可以经由网络104耦合到网络架构100,并且可以是任何期望的系统,包括电子商务系统。
发布应用142可以向访问联网系统102的用户提供多个发布功能和服务。支付系统144同样可以提供多个功能以执行或促进支付和交易。虽然发布系统142和支付系统144在图1中被示为都形成联网系统102的一部分,但是应当理解,在备选实施例中,每个系统142和144可以形成与联网系统102分离且不同的支付服务的一部分。在一些实施例中,支付系统144可以形成发布系统142的一部分。
在一些示例实施例中,发布系统142在网络(例如,互联网)上发布内容。这样,发布系统142向访问网络架构100的用户提供多个发布和市场功能和服务。结合图7更详细地讨论发布系统142。在示例实施例中,针对在线市场环境来讨论发布系统142。然而,要注意的是,发布系统142可以与例如信息(如,搜索引擎)或社交网络环境之类的非市场环境相关联。
支付系统144向用户106提供多个支付服务和功能。支付系统144允许用户106在他们的账户中累积值(例如流通货币(如美元)或专有货币(如点数、里程或私有实体提供的其他形式的货币)),并在以后用累积的值兑换经由发布系统142或网络104或网络架构100上的其他地方可以购买到的产品(例如商品或服务)。支付系统144还促进来自支付机制(例如,银行账户、paypaltm或信用卡)的支付和交易,以经由任意类型和形式的基于网络的发布系统来购买项目。
搜索增强系统150提供这样的功能,所述功能能够操作用于通过结合使用用户106的先前搜索查询以及利用其他用户的搜索查询历史的全局评分函数来增强搜索查询建议。例如,搜索增强系统150从数据库126、第三方服务器130、发布系统142和其他源访问用户106的先前搜索查询。在一些示例性实施例中,搜索增强系统150分析用户106的先前搜索查询历史以确定用户偏好和兴趣,从而增强搜索查询建议。随着用户106执行更多的搜索查询,搜索增强系统150可以进一步改善搜索查询建议的个性化。在一些示例性实施例中,搜索增强系统150与发布系统142和第三方服务器130通信,以跨越不同系统、服务或产品访问用户106的先前搜索历史。在备选实施例中,搜索增强系统150可以是发布系统142的一部分,其直接访问存储在发布系统142内的用户106的先前搜索历史。
在各种示例实施例中,全局评分服务器152存储查询项目的全局分数、查询、记号(token)、记号部分等。全局分数表示查询项目与查询池中的查询项目的相关性。查询项目可以被理解为查询的部分,例如查询中的关键字或关键字的一部分。全局分数可以由搜索增强系统150产生。在一些实例中,全局评分服务器152可以生成全局分数。在一个实施例中,全局评分服务器152可以被实现为搜索增强系统150的一部分,而不是独立组件。
在一些实例中,会话历史服务器154存储多个用户(例如,用户106)的会话历史。在一些示例实施例中,会话历史服务器154包含被配置为存储与多个用户106中的每个用户106相关联的查询项目、查询部分、记号、记号部分等的一个或多个数据结构和存储器组件。在一些情况下,会话历史服务器154还可以包括被配置为存储表示多个用户106中所有用户的会话历史和查询的全局会话历史的数据结构。在一些实例中,会话历史服务器154被实现为搜索增强系统150的组件。
此外,虽然图1示出的基于客户端-服务器的网络架构100采用客户端-服务器架构,但是本发明主题当然不限于此种架构,并且可以同样良好地应用于例如分布式或对等架构的系统。
网络客户端112通过网络服务器122所支持的网络接口访问各个发布系统142和支付系统144。类似地,编程客户端116通过api服务器120所提供的编程接口访问由发布系统142和支付系统144提供的各种服务和功能。例如,编程客户端116可以是卖家应用(例如,由加利福尼亚州圣何塞的
图2是示出了根据一些示例实施例的搜索增强系统150的组件的框图。搜索增强系统150被示出为包括接收器模块210、原生结果模块220、访问模块230、记号管理模块240、扩展结果模块250、选择模块260、建议模块270、呈现模块280以及通信模块290。本文描述的任何一个或多个模块可以使用硬件(例如机器的一个或多个处理器)或硬件与软件的组合来实现。例如,本文描述的任意模块可以将处理器(机器的一个或多个处理器中的处理器)配置为执行该模块被设计用于的操作。此外,这些模块中的任何两个或更多个模块可被合并为单一模块,且本文中针对单一模块描述的功能可以再划分到多个模块中。此外,根据各种示例实施例,本文描述为在单个机器、数据库126或设备(例如,客户端设备110)内实施的模块可以分布在多个机器、数据库126或设备中。
接收器模块210从客户端设备110接收查询部分。查询部分可以被理解为从客户端设备110接收的搜索查询的全部或一部分。所述查询部分至少包括记号部分。记号部分可以包括在搜索查询中使用的单词、数字、单词集(例如,句子或段落)、数字集(例如,数字串、电话号码、专利申请号或项目列表识别号)的全部或一部分及其组合。记号数据表示搜索查询,或表示可以与其他记号组合以形成搜索查询的记号。客户端设备110经由客户端设备110的输入设备从用户106接收文本串。接收器模块210随后经由网络104从客户端设备110接收文本串。接收器模块210可以是硬件实现的模块或者是硬件-软件组合实现的模块。针对下面在标题为“模块、组件和逻辑”的章节中描述的模块来描述接收器模块210的组件的示例性实施例。
原生结果模块220使用接收器模块210接收的查询部分和全局记号池来生成搜索查询建议。全局记号池可以被理解为与搜索增强系统150交互的一组用户使用的一组记号、记号部分、查询部分或搜索查询。在一些实例中,全局记号池可以包括未被该组用户使用的单词和短语。例如,全局记号池可以包括在字典、词典、百科全书和其他记号参考源中找到的记号(例如,单词)。在一些实施例中,该组用户包括用户106。原生结果模块220可以是硬件实现的模块或者是硬件-软件组合实现的模块。针对下面在标题为“模块、组件和逻辑”的章节中描述的模块来描述原生结果模块220的组件的示例性实施例。
访问模块230访问与客户端设备110相关联的记号池,其中接收器模块210从该客户端设备110接收记号部分。访问模块230可以通过访问存储设备(例如,存储器或机器可读存储介质)、机器(例如,服务器)或能够存储记号池及其关联的其他合适的存储库来访问与客户端设备110相关联的记号池。在一些实施例中,访问模块230经由网络104访问记号池。在一些实例中,访问模块230访问搜索增强系统150本地的存储设备内的记号池。访问模块230可以是硬件实现的模块或硬件-软件组合实现的模块。针对下面在标题为“模块、组件和逻辑”的章节中描述的模块来描述访问模块230的组件的示例性实施例。
记号管理模块240通常管理由搜索增强系统150接收的记号。在各种示例实施例中,记号管理模块240存储接收到的查询项目、查询部分、记号和记号部分。所接收的数据(例如,查询项目、查询部分、记号、记号部分)可以存储在与用户(例如,用户106)相关联的记号池和全局记号池中的一个或多个中。在一些实施例中,全局记号池代表基于网络的发布系统142和搜索增强系统150中的一个或多个的所有用户的集体的搜索查询项目和记号。记号管理模块240确定记号池的每个记号的记号质量,并将针对每个记号确定的相应记号质量与记号池的每个记号相关联。
扩展结果模块250使用由接收器模块210接收的查询部分和与客户端设备110相关联的记号池来生成搜索查询建议。在一些实施例中,与客户端设备110相关联的记号池可以被理解为历史记号池,所述历史记号池包括:在接收器模块210接收到该查询部分之前的时间,由接收器模块210从客户端设备110接收的历史记号、记号部分、查询部分或搜索查询的集合。在一些实施例中,在包括由接收器模块210接收的查询部分在内的用户会话内接收到历史记号池。在一些实例中,在与接收器模块210接收的查询部分分开的用户会话中接收到历史记号池。历史记号池可以包括在多个用户会话(例如,与接收机模块210接收的查询部分相同的会话以及一个或多个在先用户会话)中接收的记号和记号部分。扩展结果模块250可以是硬件实现的模块或硬件-软件组合实现的模块。针对下面在标题为“模块、组件和逻辑”的章节中描述的模块来描述扩展结果模块250的组件的示例性实施例。
选择模块260选择由原生结果模块220生成的搜索查询建议和由扩展结果模块250生成的第一搜索查询建议子集和第二搜索查询建议子集。在一些实施例中,第一搜索查询建议子集包括由原生结果模块220生成的搜索查询建议,而第二搜索查询建议子集包括由扩展结果模块250生成的搜索查询建议。选择模块260可以为第一子集和第二子集中的每一个选择相等数量或不同数量的搜索查询建议。在一些实例中,第二搜索查询建议子集中包括的搜索查询建议的数量可以至少部分地基于第一子集中的搜索查询建议的数量。选择模块260可以是硬件实现的模块或者硬件-软件组合实现的模块。针对下面在标题为“模块、组件和逻辑”的章节中描述的模块来描述选择模块260的组件的示例性实施例。
建议模块270合并第一搜索查询建议子集和第二搜索查询建议子集,并将搜索查询建议的组合子集组织成一定顺序。在一些实施例中,搜索查询建议的组合子集的顺序不同于第一子集的顺序和第二子集的顺序。例如,建议模块270可以在第一子集的搜索查询建议之间穿插第二子集的一个或多个搜索查询建议。建议模块270可以是硬件实现的模块或者硬件-软件组合实现的模块。针对下面在标题为“模块、组件和逻辑”的章节中描述的模块来描述建议模块270的组件的示例性实施例。
呈现模块280根据由建议模块270确定的顺序呈现组合搜索查询建议。例如,呈现模块280生成一组用户界面元素、屏幕、框架等,以便在客户端设备110上呈现。呈现模块280使得在客户端设备110的用户界面上呈现组合搜索查询建议。在一些实施例中,呈现模块280可以通过将组合的搜索查询建议发送给客户端设备110来使得呈现组合搜索查询建议。呈现模块280可以是硬件实现的模块或硬件-软件组合实现的模块。针对下面在标题为“模块、组件和逻辑”的章节中描述的模块来描述呈现模块280的组件的示例性实施例。
通信模块290能够实现客户端设备110、搜索增强系统150、发布系统142和任何其它合适的系统之间的通信。在一些示例性实施例中,通信模块290能够实现接收器模块210、原生结果模块220、访问模块230、记号管理模块240、扩展结果模块250、选择模块260、建议模块270和呈现模块280之间的通信。通信模块290可以是硬件实现的模块、软件实现的模块或其组合,如下面更详细的描述。例如,通信模块290可以包括通信机构,所述通信机构诸如天线、发射器、一个或多个总线、以及能够实现模块210-280、客户端设备110、搜索增强系统150和发布系统142之间的通信的其他合适的通信机构。通信模块290可以是硬件实现的模块、软件实现的模块或其组合。针对下面在标题为“模块、组件和逻辑”的章节中描述的模块来描述通信模块290的组件的示例性实施例。
在下面更详细描述的一些实施例和实施例组合中,搜索增强系统的模块一起操作以执行包括由下面的伪代码表示的操作:
data:aquerystringinthesearch,q.thisstringcanbeaprefix,tokenoracompletequery.
result:alistofqueriesrelevanttoqforauto-completion
nq=retrieveqac(q);
initializeeq;
candidaterequests=expand(q);
forcincandidaterequestsdo
|eq.addall(retrieveqac(c));
end
eq’=selection(eq);
boostrank(eq’);
aq=merge(nq,eq’);
returnaq;
在上面的伪代码中,如将在下面通过附图和各种实施例的描述更详细的说明,nq是原生队列,qac是查询自动完成,并且q是当前查询。如上面的示例伪代码所示,用户106的每个查询被解析成记号。搜索增强系统150可以执行字过滤以清理记号,并将它们存储在记号池中,记号池可以记录和跟踪会话中重要的记号。
图3是示出了根据一些示例实施例的搜索增强系统150在执行增强搜索查询建议的方法300中的操作的流程图。方法300中的操作由搜索增强系统150使用上面参照图2描述的模块和下面描述的硬件(如处理器、服务器、计算环境等)来执行。
在操作310中,接收器模块210从客户端设备110接收至少包括记号部分在内的查询部分。在各种示例实施例中,接收器模块210经由网络104从客户端设备110接收查询部分。例如,接收器模块210可以是能够从客户端设备110接收查询或查询部分的端口、服务器或任何其他机构。接收器模块210可以接收其中n记号的形式被表示为q.tok[1...n]的查询部分。方法300可以响应于用户106从任意设备(例如,客户端设备110)发出查询、查询部分、记号或记号部分而启动。在一些示例实施例中,除了查询部分之外,具有web服务器122的形式的接收器模块210还接收针对自动完成的查询建议的请求。接收器模块210将针对查询建议的请求转发给搜索增强系统150内的其他模块。例如,接收器模块210可以将该请求转发给原生结果模块220,下面将更详细地描述。
根据实施例,查询是用户106使用、并由搜索引擎接收以搜索用户所需项目的一组单词。例如,“pradaeyeglasses(眼镜)”可以是由搜索引擎接收并由搜索引擎处理的用以搜索用户106期望的prada品牌的眼镜的用户查询。在至少一些示例实施例中,本公开在下面段落中使用q作为查询的代表。在一些实例中,“pradaeyeglasses”可以是用户106将向其添加附加查询部分以形成完整查询的查询部分。查询部分可以被理解为查询的一部分。在一些实例中,查询部分是完全形成的查询,而在其他实例下,查询部分小于完全形成的查询。如上所述,查询部分至少包括从客户端设备110接收到的记号部分。
根据各种示例实施例,记号被理解为查询或查询部分中的单词的子列表。例如,查询部分“pradaeyeglasses”具有三个记号:“prada”、“eyeglasses”和“pradaeyeglasses”。对于各种示例实施例,本公开在下面的段落中将使用t作为记号的代表。即,q是t的列表。为了方便起见,本公开使用q.tok[1..i]来表示q中的1到i个记号的子列表。记号部分可以被理解为记号的一部分或片段。例如,在记号是“eyeglasses”的情况下,记号部分是该用语的一部分,如“eye”或“eyegl”。可以在接收到完整查询或记号之前启动操作310。这样,在一些示例实施例中,可以在接收到搜索增强系统150可以根据其生成搜索查询建议的最小可操作的字符集(例如,记号部分)时启动操作310。
在操作320中,原生结果模块220基于记号部分生成第一搜索查询建议集合。原生结果模块220可以基于从接收器模块210接收到针对查询建议的请求而执行操作320。第一搜索查询建议集合包括按照第一顺序的第一建议记号集合。在各种示例实施例中,第一搜索查询建议集合是自动完成结果的原生队列。原生队列可以由全局评分函数生成,下面将更详细地描述。例如,如果用户106查询“prada”,则原生队列可以包括由全局评分函数确定的与“prada”相关的前n个查询建议。换言之,原生队列包含由自动完成系统初始提供的结果。为了方便起见,本公开使用nq[i]来表示nq中的第i个查询项目。nq[last]表示nq中的最后一个查询建议。
原生结果模块220可以被实现为服务器(例如,自动完成服务器),所述服务器被配置为:接收查询或查询部分,生成查询建议集合(例如原生队列),并将查询建议集合发送给客户端设备110或者搜索增强系统150的一个或多个其他模块。在一些示例实施例中,原生结果模块220被实现为在逻辑上或物理上与扩展结果模块250(例如,扩展结果服务器)分离的原生结果服务器。在一些实例中,原生结果模块220实现在与扩展结果模块250(例如,扩展结果服务器)相同的服务器设备上。在下文中针对图10的机器描述能够形成原生结果服务器的实现的基础的示例硬件。
在操作330中,访问模块230访问与客户端设备110相关联的记号池。在一些实例中,访问模块230通过访问记号池数据库或数据库126上的记号池表来访问记号池。在一些示例实施例中,记号池数据库被存储在会话历史服务器154上,并且访问模块230查询或以其他方式访问会话历史服务器154以访问记号池。在访问会话历史服务器154之后,访问模块230检索用户106的会话历史(例如,查询历史或记号池)的全部或一部分以及存储在其中的记号。在一些实例中,访问模块230被实现为下述中的一个或多个:服务器端口、服务器、或者能够访问或由软件配置以访问记号池的任何其他合适机构。在一些示例实施例中,通过接收器模块210传递针对查询建议的请求,提示访问模块230访问会话历史服务器154上的记号池。
在各种实施例中,记号池是记录用户(例如,用户106)的会话历史中的记号或记号部分的池。记号池可以提供具有质量(例如,高质量)的记号。可以有多种方法来定义记号的质量。记号具有的特征(例如,记号特征)可以被标记为t.features,因此记号的质量可以被表达为t.quality=tqu(t.features)。记号池可以基于任意选择策略(例如,所有记号、高质量的前n个记号、在池中随机选择n个记号)来提供记号。在各种实施例中,记号池内的记号可以与一个或多个客户端设备110、用户106或其组合相关联。例如,具有记号池表的形式的记号池可以被链接到一个或多个关联数据结构(例如,关联数据库、关联表等),该关联数据结构包含:在记号池的记号与客户端设备110或用户106之间的关联的表示。在一些实例中,记号池可以分布在各个用户106或客户端设备110的会话历史中。在这些实例的一些实施例中,记号池的相同记号可以存储在记号所关联的每个用户106或客户端设备110的会话历史中。
根据各种实施例,会话历史是用户106的历史查询的记录。可以存在用于记录用户106的会话历史的若干策略(例如,存储自该用户106第一次使用该系统起的每个查询记录,存储过去n天/月/年的查询记录)。会话历史的存储位置可以变化(例如,存储在客户端侧(计算机、移动设备),存储在服务器侧或存储在中间设备上)。将查询历史发送给存储位置的策略也可以具有多种实现(例如,立即发送用户查询历史,先在客户端侧发送用户查询历史记录,并周期性地将历史发送回会话历史服务器154)。
在各种示例实施例中,记号特征可以被理解为记号池内的记号或查询项目的方面。记号特征的示例可以是记号在会话历史中的使用时间。记号特征还可以包括记号频率、记号新近度、以及在记号或查询项目被接收到记号池中时可记录的其他特征。根据各种实施例,记号频率是用于描述特定记号在会话历史中的出现有多显着的度量。记号频率可以使用多种策略来确定。例如,记号频率被确定为特定记号在会话历史中的频率。记号频率也可以被确定为特定记号在会话历史中的频率的归一化形式。在本公开中,记号频率被表示为t.freq。
记号新近度可以被理解为描述在会话历史中用户106最近使用记号有多近的度量。在多个用户106的全局池的上下文中使用记号新近度的情况下,记号新近度可以表示记号最近被任意用户106使用有多近。在一些实例中,记号新近度由指定记号在会话历史中的最新出现或其归一化值来确定。记号管理模块240、扩展结果模块250或原生结果模块220可以部分地通过与记号池或全局记号池中的记号或查询项相关联的时间值来确定记号新近度。该时间值可以指示用户(例如,用户106)使用记号的时间。记号新近度可以表示为t.rec。
在各种示例实施例中,访问记号池包括附加功能。例如,如图3所示,操作330包括操作332,在操作332中接收器模块210接收形成搜索查询的一组记号。
在操作334中,记号管理模块240存储该组记号以形成记号池。在各种示例实施例中,记号管理模块240将该组记号存储在与会话历史服务器154相关联的数据结构和数据存储设备中。例如,记号管理模块240将该组记号存储在与用户106相关联的记号表中,并且包括表示该组记号中的每个记号的一个或多个特征的值。存储该组记号的数据结构(例如,数据表)可以是搜索增强系统150的一个或多个服务器(诸如会话历史服务器154)的一部分。
在操作336中,记号管理模块240将记号池与用户106和与用户106相关联的客户端设备110中的一个或多个相关联。记号管理模块240可以通过修改表示记号池的数据结构内的值来关联记号池。在各种实施例中,记号管理模块240创建或修改指示记号池与用户106之间的关联的元数据。
在操作340中,扩展结果模块250基于记号部分和记号池生成第二搜索查询建议集合。在一些实施例中,第二搜索查询建议集合包括按照第二顺序的第二建议记号集合。扩展结果模块250可以被实现为服务器(例如,扩展结果服务器),实现为其上实现有原生结果模块220的服务器(例如,自动完成服务器)的逻辑组件,或实现为任何其它合适的硬件。根据各种示例性实施例,第二搜索查询建议集合是扩展队列(eq),其表示由搜索增强系统150为了增强搜索查询建议(例如,原生队列)而预测/扩展的附加的自动完成结果。扩展队列可以与原生队列合并,以生成用户106的最终自动完成结果。为了方便起见,在本公开中,扩展队列被描述为eq[j],其表示eq中的第j个查询建议。
生成扩展队列可以被理解为扩展操作,在所述扩展操作中搜索增强系统150通过首先基于用户的会话历史和记号池扩展用户查询来增强搜索查询建议(例如,原生队列)。搜索增强系统150利用多种扩展策略,基于系统开发者的选择、参数或期望来增强搜索查询建议。例如,搜索增强系统150可以:将来自记号池的记号添加或附加到当前查询,添加或附加记号部分以使得在操作310中接收到的记号部分变完整,在查询的中间插入记号,使用记号的同义词或词干,将历史记录中的查询级联到当前查询,或其他合适的扩展策略。搜索增强系统150可以使用这些扩展策略来将当前查询扩展成潜在查询的列表。对于每个潜在查询,搜索增强系统150可以从会话历史服务器154检索相应的查询建议结果。
在各种示例性实施例中,操作340包括一个或多个清理功能。清理功能可以包括任意查询清理技术。例如,搜索增强系统150可以使用修剪、词干和停止词过滤中的一种或多种。清理功能从查询或查询部分中移除无关的记号或记号部分。
在操作350中,选择模块260选择第一搜索查询建议子集和第二搜索查询建议子集。在各种实例中,从第一搜索查询建议集合中选择第一搜索查询建议子集,以及从第二搜索查询建议集合中选择第二搜索查询建议子集。选择模块260可以被实现为诸如在扩展结果服务器中的服务器。
选择第一搜索查询建议子集和第二搜索查询建议子集可以被理解为选择函数。在一些示例实施例中,选择函数包括选择评分函数。搜索增强系统150可以利用选择评分函数来评估查询建议是否可以列在最终自动完成队列中。根据实施例,评分函数可以如下:
q.ss=s(q.score,q.imp,otherfactors)
评分函数确定来自扩展队列的查询建议是否应从第二搜索查询建议集合(例如,扩展队列)中选进第二搜索查询建议子集中。在一些示例实施例中,评分函数可用于确定来自原生队列的查询建议是否应从第一搜索查询建议集合(例如,原生队列)中选进第一搜索查询建议子集中。使用评分函数,选择模块260确定一个查询项目是否表示与来自扩展队列或原生队列的其他查询相比更为重要的记号。评分函数使得选择模块260能够确定全局分数是否高于来自扩展队列或原生队列的其他查询。然后,选择模块260可以基于所表示的记号的相对重要性和所表示的记号的全局分数中的一个或多个,来选择所表示的记号是包括到第二搜索查询建议子集中还是包括到第一搜索查询建议子集中。
在各种示例实施例中,记号重要性表示记号相对于在操作310中接收器模块210接收的查询部分而言的重要性。记号重要性可以基于记号因素(例如记号频率和记号新近度)来确定。在一些实施例中,记号重要性由t.imp表示,并且可以是t.freq、t.rec和其他因素的函数。因此,在至少一些实施例中,记号重要性可以使用以下等式来确定:
t.imp=timp(t.freq,t.rec,otherfactors)。
在各种实施例中,查询重要性与记号重要性相关。查询重要性可以表示为q.imp,如上面关于评分函数所示的那样。查询重要性可以通过以下函数确定:
q.imp=qimp(t.imp,otherfactors)。
在一些示例实施例中,在计算每个查询建议的选择分数之后,搜索增强系统150的选择模块260采用过滤函数来选择有资格包括在第一搜索查询建议子集或第二搜索查询建议子集中的查询项目。过滤函数可以表示为如下:
eq′=filter(eq,nq,otherfactors).
所选查询项目可以包括有资格的查询建议,下面将更详细地讨论。要包括在第二搜索查询建议子集中的所选查询项目可被表示为eq’。在一些实施例中,针对eq’的所选查询项目的最大数量是受控的。例如,在搜索增强系统150的操作之前,所选查询项目可以受到预定数量的限制。
从第二搜索查询建议集合中选择的用于包括的查询项目可以被置于第二搜索查询建议子集中。例如,所选查询项目可以存储在自动完成服务器的存储器(例如,ram)中,以用于在方法300中进一步使用。在一些示例实施例中,所选查询项目与对相关联的客户端设备110的引用或会话标识符一起存储在会话历史服务器154中。类似地,在选择模块260从第一搜索查询建议集合中选择查询项目的实施例中,选择模块260可以将所选查询项目置于第一搜索查询建议子集中,以类似地存储在自动完成服务器或会话历史服务器154的存储器中。
在操作360中,建议模块270将第一搜索查询建议子集和第二搜索查询建议子集合并,以形成第三搜索查询建议集合。在各种示例性实施例中,建议模块270按照与第一顺序和第二顺序不同的第三顺序组织第三搜索查询建议集合。建议模块270可以被实现为服务器或实现在服务器(诸如自动完成服务器)上。
建议模块270可以从选择模块260接收第一搜索查询建议子集和第二搜索查询建议子集。在一些实施例中,建议模块270可以接收表示第一搜索查询建议子集和第二搜索查询建议子集的数据。例如,建议模块270接收表示第一搜索查询建议子集和第二搜索查询建议子集的每个查询项目在数据结构中的位置(例如,在服务器、数据库126或数据表中的存储器位置)的指示符。在该实施例中,建议模块270(例如,建议服务器)在合并第一搜索查询建议子集和第二搜索查询建议子集之前,访问或以其他方式检索第一搜索查询建议子集和第二搜索查询建议子集的查询项目。
合并第一搜索查询建议子集和第二搜索查询建议子集可以被理解为合并状态或合并函数。在合并状态下,搜索增强系统150将nq(例如,原生队列)和eq(例如,扩展队列)组合成第三搜索查询建议集合。因此,第三搜索查询建议集合是自动完成队列(aq)。在各种示例实施例中,自动完成队列是从nq和eq的合并得到的最终队列。aq可以由搜索增强系统150提供,供在客户端设备110处的用户106考虑。
合并函数可以根据各种合并策略来合并第一搜索查询建议子集和第二搜索查询建议子集。例如,建议模块270可以通过下述方式来合并第一搜索查询建议子集和第二搜索查询建议子集:将来自第一搜索查询建议子集和第二搜索查询建议子集的查询项目随机插入到列表中;生成有序列表;将第二搜索查询建议子集置于有序列表中并在第一搜索查询建议子集之上;基于全局分数对第一搜索查询建议子集和第二搜索查询建议子集的查询项目进行排序;或其他合适的合并或排序方式。一个合并示例可以包括首先选择nq中的前m个查询项目和eq中的前n个查询项目,将它们合并到aq中,并将eq’中的n个查询建议临时放置在aq的末尾处。eq’在aq中的最终位置可以由提升函数来确定,下面将对此更详细地描述。
在各种示例实施例中,如下面将更详细描述的,前m个查询是通过超过预定或相对阈值的全局分数来确定的。对前m个查询的选择处理可以表示为如下:
nq’={qs|qs∈nq,qs.gs≥nq[m].gs}
如上所示,nq[m]表示nq中的第m个查询建议。在一些示例实施例中,针对前n个查询项目的选择处理可以表示为如下:
eq’={qs|qs∈eq,qs.finalrank≤eq[n].finalrank}
在该实施例中,eq’[n]表示针对eq’选择的第n个查询建议。
如上所述,合并第一搜索查询建议子集和第二搜索查询建议子集的操作360可以包括一个或多个组织操作。在各种示例实施例中,操作360包括操作362,在操作362中建议模块270按照与第一搜索查询建议集合的第一顺序和第二搜索查询建议集合的第二顺序不同的第三顺序来组织第三搜索查询建议集合(例如,aq)。将在下面进一步详细讨论组织方法的示例实施例。
在操作370中,呈现模块280在客户端设备110处按照第三顺序呈现第三搜索查询建议集合(例如,aq)。在各种示例实施例中,呈现模块280通过将第三搜索查询建议集合发送给客户端设备110来呈现第三搜索查询建议集合。
在呈现第三搜索查询建议集合时,客户端设备110或呈现模块280使得生成一个或多个用户可感知的用户界面元素并将其呈现给用户106。例如,第三搜索查询建议集合可以被生成为客户端设备110的用户界面上接近输入到用户界面中的查询部分或记号部分的可见用户界面元素。在一些示例实施例中,第三搜索查询建议集合的查询项目被呈现为在用户界面处的可听用户界面元素,其通过音频输出设备播放,或通过其他用户可感知的呈现方法播放。一个或多个用户可感知的用户界面元素可以是可选择的用户界面元素,使得在选择(例如,触摸触摸屏上靠近查询项目处、点击或接近查询项目、将光标指向查询项目)可选择的用户界面元素时,与可选择的用户界面元素相关联的查询项目被输入到已经输入了查询部分或记号部分的数据输入栏。在某些情况下,正在输入到数据输入栏的查询项目取代了查询部分或记号部分,扩展或完成了查询部分或记号部分,或者作为查询部分或记号部分的补充被输入。
在一些示例实施例中,搜索增强系统150通过消除不太可能的候选查询,使用n-gram模型来减少服务器上的工作负载。n-gram模型可以操作为优化启发法,减少本文描述的服务器上的工作负载,并且改善搜索增强系统150的响应时间。
n-gram是在文档的给定集合(例如查询)中出现的n个记号的序列。可以使用用来检查扩展查询的联合的二元(n=2)模型来评估搜索增强系统150。如果在二元模型中存在查询(例如,可以是作为包含在扩展队列中的候选者的查询)之间的联合,则该查询可以用来请求更多的查询以用于最终合并。如果在二元模型中不存在查询之间的联合,则正可从扩展队列中排除在测试的查询。例如,如果当前查询是ab,并且此查询通过记号c扩展为abc,则搜索增强系统150检查二元模型中是否存在联合bc。
n-gram模型可以记录文档集合中的n-gram和n-gram的频率。在一些实施例中,为了将扩展队列的查询建议的数量限制为与其他查询建议相比具有相对频率的查询建议,二元模型是受限的。例如,二元模型可以被限制到预定百分比。为了将二元模型限制为一定百分比,对于限于k个二元组的二元模型,给定百分比l%,搜索增强系统按照二元模型中的频率对所有二元组进行排名(其中以排序l%*k作为枢轴),并选择频率大于或等于枢轴的所有二元组。二元模型的限制可能具有限制查询建议的扩展队列的影响。例如,在一些实例中,二元模型被限制在0.5%至20%之间,以平衡服务器工作负载和网络通信工作负载(例如,带宽)与aq的包容性。另外,在一些实施例中,搜索增强系统150针对原生队列限制到预定数量的查询建议,以针对执行自动完成建议而言提高搜索增强系统150的性能时间。限制原生队列的查询建议的数量,搜索增强系统150对查询建议进行排名,以将该数量的建议提交给表示查询建议的百分比排在前面的建议。在一些实例中,可以针对要被选择以包括在建议的查询中的查询或记号的频率来控制二元模型的百分比。
图4是根据各种示例实施例的搜索增强系统150在执行生成第一搜索结果查询建议集合的操作320时的操作的流程图。图4中所示的操作可以由搜索增强系统150使用上文关于图2描述的模块和下文关于图10描述的硬件来执行。
在一些示例实施例中,客户端设备110是一组客户端设备中的第一客户端设备。在操作410中,访问模块230访问与该组客户端设备相关联的全局记号池。与在操作330中访问模块230访问客户端设备的记号池类似,访问模块230可以访问全局记号池。全局记号池可以被理解为记录该组客户端设备的一个或多个会话历史中的记号或记号部分的全局池。在一些实例中,该组客户端设备中的每个客户端设备具有一个或多个关联的会话历史记录,其中每个会话历史记录具有表示查询历史的一个或多个查询项目。
在操作420中,原生结果模块220基于记号部分和全局记号池生成第一搜索查询建议集合。在至少一些实施例中,使用全局记号池,原生结果模块220计算每个查询项目的全局分数。查询项目的全局分数由用于查询的全局评分函数计算。如本公开中讨论的,查询的全局分数表示为q.score。全局分数可以表示全局记号池中或用户106的记号池中的的查询项目相对于在操作340中接收器模块210接收的查询部分的相关性。被评分的查询项目的特征被表示为q.features。因此,在各种示例实施例中,全局评分函数可以由下式表示:
q.score=gs(q.features).
图5是示出了根据一些示例实施例的搜索增强系统150在执行增强搜索查询建议的方法500中的操作的流程图。方法500中的操作可以由搜索增强系统150使用上文参照图2描述的模块和下文参照图10描述的硬件来执行。如图5所示,方法500包括上面参照图3描述的方法300中的一个或多个操作。
在操作510中,接收器模块210从客户端设备110接收一组查询。这组查询表示一组历史查询。该组历史查询中的每个查询包含一组历史记号。在至少一些实例中,该组历史查询中的每个查询的该组历史记号形成记号池。例如,通过接收器模块210从客户端设备110接收连续的查询集合,与客户端设备110相关联的记号池可以随着时间被填充。每个历史记号包括一个或多个特征。如上所述,用于历史记号的特征可以包括:记号的使用时间、记号与其他记号或查询项目的语义关系、查询时间以及可以指示记号池内的记号或查询项目在记号池内的相对放置以及记号池内的记号或查询项目之间的关系的其他合适特征。
在各种示例实施例中,在操作310中接收到查询部分,在操作320中生成第一搜索查询建议集合,并且在操作330中访问记号池之后,在操作520中记号管理模块240确定记号池的每个历史记号的记号质量。
在操作530中,记号管理模块240将记号质量与记号池的每个历史记号相关联。在各种实例中,在操作340中,记号管理模块240临时地进行该关联以生成第二搜索查询建议集合。在将记号质量与记号池中的每个记号相关联之后,扩展结果模块250可以生成由具有高于预定质量阈值的记号质量的记号构成的第二搜索查询建议集合。
图6是示出了根据一些示例实施例的搜索增强系统150在执行增强搜索查询建议的方法600中的操作的流程图。方法600中的操作可以由搜索增强系统150使用上文参照图2描述的模块和下文参照图10描述的硬件来执行。如图6所示,方法600包括上面参照图3描述的方法300中的一个或多个操作。
在各种示例实施例中,方法600最初通过在操作310和操作320中接收查询部分来执行,如图6所示。在操作610中,原生结果模块220生成第一全局分数集合。第一全局分数集合中的每个全局分数与第一搜索查询建议集合中的搜索查询建议(例如,查询项目、记号或记号部分)相关联。在各种示例实施例中,与操作420中的方式类似,原生结果模块220生成查询建议的第一全局分数集合。
在操作620中,原生结果模块220基于第一全局分数集合按照第一顺序组织第一搜索查询建议集合。第一顺序可以通过全局分数(例如,通过全局分数排名的查询建议)、语义关系、随机顺序、其组合或任何其它合适的组织方法中的一个或多个来确定。在各种实例中,原生结果模块220按照第一顺序或者包括对其的引用,将第一搜索查询建议集合存储在搜索增强系统150的易失性或临时存储器中。
在各种示例实施例中,然后通过在操作330和操作340中访问记号池来执行方法600。在操作630中,扩展结果模块250生成第二全局分数集合。第二全局分数集合中的每个全局分数与第二搜索查询建议集合中的搜索查询建议(例如,查询项目、记号或记号部分)相关联。可以以与上述操作420类似地或相同地生成第二全局分数集合。
在操作640中,扩展结果模块250基于第二全局分数集合按照第二顺序组织第二搜索查询建议集合。第二搜索查询建议集合可以基于第二全局分数集合、查询建议与查询部分的语义关系、其组合或任何其它合适的方法来组织。
如图6所示,操作350包括附加操作。在操作650中,选择模块260生成第一搜索查询建议集合的全局分数阈值。在一些示例实施例中,选择模块260生成作为相对阈值的全局分数阈值,以限制第一搜索查询建议集合和第二搜索查询建议集合中的每一个中的可选择的查询建议。选择模块260可以为第一和第二搜索查询建议集合两者生成单个全局分数阈值,或者可以分别为第一和第二搜索查询建议集合生成第一和第二全局分数阈值。全局分数阈值可被设置为使得第一和第二搜索查询建议集合包括相同或相似数量的搜索查询建议。在一些示例实施例中,全局分数阈值可以是被确定为指示搜索查询建议与给定查询部分的客观相关性的预定阈值。
在操作660中,选择模块260确定第一搜索查询建议集合的一个或多个搜索查询建议超过全局分数阈值以包括在第一搜索查询建议子集中。选择模块260可以通过将每个搜索查询建议的全局分数与全局分数阈值进行比较来确定超过全局分数阈值的搜索查询建议。在一些实例中,在确定全局分数是否超过全局分数阈值之前,可以对全局分数进行归一化。
在操作670中,选择模块260确定第二搜索查询建议集合的一个或多个搜索查询建议超过全局分数阈值以包括在第二搜索查询建议子集中。类似于操作660,选择模块260可以确定哪些搜索查询建议具有超过全局分数阈值的原始全局分数或归一化的全局分数。在一些实施例中,选择模块260使用全局评分函数以及附加因素(例如一个或多个搜索查询建议与查询部分之间的语义关系的表示)确定要包括的一个或多个搜索查询建议。
在各种示例性实施例中,操作362包括附加操作。在操作680中,建议模块270计算第三搜索查询建议集合中包括的第二搜索查询建议子集内的每个搜索查询建议的提升因素。提升可以被理解为使得aq考虑全局分数的对aq进行分类方法,其反映出其他用户如何使用查询和接收查询建议以及当前用户(例如,用户106)希望如何使用查询。提升因素的计算可以被理解为提升阶段或提升函数。提升阶段可以计算第二搜索查询建议子集(例如,eq′)中的每个查询项目的提升因素。查询项目可以表示为eq’中的q.bf(例如,查询项目的提升因素)。
在操作690中,建议模块270基于第二搜索查询建议子集的每个搜索查询建议的提升因素以及第一全局分数集合和第二全局分数集合来确定第三顺序。用于计算q.bf值的提升函数的示例实施例可以是:
q.bf=qbf(q.tok,q.score,q.imp,otherfactors)。
在一些实例中,q.bf基于查询项目的底层记号的因素。如此,在一些实施例中,q.bf通过q.bf=∑iti.bf来表示。建议模块270可以确定查询项目内的记号的提升因素。为了用于第二搜索查询建议子集中,建议模块270可以采用记号提升函数。例如,用于确定记号的提升因素的记号提升函数可以类似于上文描述的提升函数,并表示如下:
t.bf=tbf(t.score,t.imp,otherfactors)。
根据一个实施例,基于查询项目的提升因素,搜索增强系统150的建议模块270可以计算该查询项目从自动完成队列的底部提升了多少位置(q.boostpos),如下所示:
q.boostpos=qbp(q.bf,otherfactors)。
在确定第二搜索查询建议子集中的每个查询项目的提升因素之后,建议模块270确定该查询项目的位置。在一些示例性实施例中,建议模块270根据诸如下述函数之类的函数来确定第三顺序,如:
q.finalpos=qfp(q.boostpos,otherfactors)。
在一些示例实施例中,aq长度(例如,自动完成选项的数量)为10。然而,应当理解,aq长度可以是任意长度,包括更多或更少数量的查询项目。第三顺序的确定和第三顺序内的查询项目的放置将nq和eq’中的用于在客户端设备110处呈现的查询项目相互混合。
在一些实例中,各种查询项目的根据提升分数确定的提升的排名可以具有相同的提升的排名。查询项目可以通过按重要性加权的分数(例如,q.impscore)来分类,并选择足够数量的查询建议。重要性可以表示为:
q.impscore=q.imp*q.gs。
一旦由建议模块270建立了查询项目的最终位置,则在操作370中呈现模块280使得呈现第三搜索查询建议集合(例如,aq),如上所述。
作为示例,在执行方法300、500和600的一个或多个操作中,搜索增强系统150可执行重要性算法的指数提升。方法300、500和600的一个或多个操作可以通过下面描述的算法的方面来表示。
在第一示例中,用户106对gucci产品感兴趣。用户106已经发出了两个查询,即“gucci”和“guccibelt(gucci皮带)”。这两个查询存储在记号池中(如在操作334中)或在会话历史服务器154的记号池内。当如在操作310中发出另一查询“shoe(鞋)”时,搜索增强系统150可以生成如下所示的aq。应该注意的是,下面呈现的aq可以不以下面所示的格式呈现给用户106。
表1
原生结果可以指示已经部分(如在操作320、340、620和640中)执行的方法300、500或600。如所示出的,在一些实施例中,在执行操作320或620之后,原生结果缺少与gucci有关或包括gucci的查询建议。扩展结果模块250可以执行操作340或640。扩展结果模块250生成两个查询项目“guccishoes”和“guccishoesmen”,其可以被确定为具有比原生结果模块220的查询建议更高的相对相关性。
在第二示例中,用户106对nba明星的鞋子型号感兴趣。用户106按顺序发出七个查询:1.“kd6”、2.“nikefoampositesize12”、3.“retrojordansize12”、4.“lebronsize12”、5.“kd6size12”、6.“kobe9size12”以及7.“kobe8size12”。关于查询1“kd6”,由于在用户106发出他的第一查询之前在会话中没有查询,所以搜索增强系统150利用扩展结果模块250生成的结果与原生结果模块220的结果相同,如下表2所示。
表2
关于查询2“nikefoampositesize12”,响应于接收器模块210从第二查询的用户106接收到第一记号“nike”,自动完成结果的比较如下。
表3
由于用户106没有示出在第二查询中任何具体的搜索意图,因此根据各种实施例,搜索增强系统150工作在学习阶段或模式中。如所示出的,在一些实施例中,搜索增强系统150在学习阶段和推理阶段之间转换。在学习阶段,搜索增强系统150可以基于原生结果模块220提供自动完成建议。在学习阶段期间,搜索增强系统150还可以在内部存储查询,并为扩展结果模块250构建记号池。在一些示例实施例中,在给定会话内,搜索增强系统150可以在学习阶段和推理阶段之间进行操作和转换。在一些实例中,搜索增强系统150间歇地(例如,在先前的会话中或在多个会话上)执行学习阶段。
关于查询3“retrojordansize12”,用户106发出前两个记号“retro”和“jordan”。搜索增强系统150产生原生和扩展结果,如下表4所示。
表4
当用户106仅通过接收器模块210将“retro”和“jordan”输入搜索增强系统150时,搜索增强系统150可以捕获用户106搜索“retrojordansize12”的意图。该查询项目在搜索增强系统150的结果(例如,“按重要性的指数提升”)中具有与原生结果集合相比更好的位置(例如,第一位置)。
现在参考查询4“lebronsize12”,用户106发出第一记号“lebron”,搜索增强系统150捕获查询“lebron大小12”的明显意图。搜索增强系统150基于对用户106的意图的推断将该查询定位在第一位置,如下表5所示。
表5
关于查询5,用户106发出前两个记号“kd”和“6”,搜索增强系统150推断用户106的意图是查询“kd6size12”,并将该查询定位在所建议的查询集合的第一位置。如下表6所示,原生结果模块220不必须提供相同的基于推断的建议查询集合。
表6
现在移动到查询6“kobe9size12”,搜索增强系统150生成基于推断的搜索查询建议集合,并将推断的搜索置于扩展结果集合的顶部位置(例如,提升的结果集合)。搜索增强系统150响应于用户106输入“kobe”和“9”而捕获用户106查询“kobe9size12”的意图,如下表7所示。
表7
最后,关于查询7“kobe8size12”,当用户106输入“kobe”和“8”时,搜索增强系统150在原生结果模块220和扩展结果模块250两者的查询建议集合中推断出搜索“kobe8size12”的意图。然而,“kobe8size12”建议搜索被置于扩展结果模块250的查询建议集合中的相对较高的位置。
表8
结果,本文描述的一种或多种方法可以避免对在研究、决策、在线购物等等方面涉及的原本需要的某些努力或资源的需求。可以减少用户106在定位相关搜索结果时花费的努力,并且可以基于搜索增强系统150的模块和本文所描述的相关联的方法更准确地确定搜索结果。此外,本文所描述的方法中的一个或多个可以提供为用户106(该用户将查询项目或记号输入到与搜索增强系统150相关联的系统中)定制的自动完成和搜索查询建议。本文公开的方法可以基于添加到用户106的会话历史的附加查询和记号而向用户106提供持续重新定制的建议。此外,本公开的方法,将基于全局会话历史的建议与基于个人用户历史的定制建议进行组合,可以提供与不具有扩展结果模块250相比更好地解释用户106的目标的搜索查询建议。例如,本文描述的一种或多种方法可以提供标准自动完成功能不提供的查询建议,这是因为基于查询的特定性、流行性的缺乏、查询组合的新颖性或由查询组合表示的结果而使得查询建议的全局评分较低。此外,本文描述的一种或多种方法在生成搜索查询建议时提供更快的收敛。由搜索增强系统150通过对扩展结果模块250所使用的变量的操纵来动态减少所提供的方法的响应时间,以平衡搜索建议的生成和呈现的效率、包容性和及时性的合适比率。
图7是示出在至少一个实施例中的在网络架构100(例如,联网系统)的发布系统142内提供的多个组件的示例框图。在该实施例中,发布系统142是可以提供售卖项目(例如商品或服务)并且进一步实现本文所描述的用于交互式查询生成和精炼的特征的市场系统。这些项目可以包括数字商品(例如货币、许可权)。发布系统142可以在专用或共享服务器机器(未示出)上托管,这些专用或共享服务器机器通信耦合以实现服务器机器之间的通信。多个组件自身直接或间接彼此通信地耦合并与各种数据源通信地耦合(例如经由适当的接口),以允许信息在组件间传递或允许组件共享并访问公共数据。此外,组件可以经由一个或多个数据库服务器124访问一个或多个数据库126,如图1中所示。
回到图7,发布系统142提供多种发布、列表和价格设置机制,其中,买家可以列出出售的商品或服务(或发布关于商品或服务的信息),买家可以表示购买这种商品或服务的兴趣或者意向,并且可以为关于商品或服务的交易设置价格。为此,发布应用142可以包括至少一个发布引擎702以及一个或多个拍卖引擎704,拍卖引擎704支持拍卖形式的列表和价格设置机制(例如英式拍卖、荷式拍卖、次高叫价拍卖、中式拍卖、复式拍卖、逆向拍卖等)。
定价引擎706支持多种价格列表格式。一个这种格式是固定价格列表格式(例如,传统划分广告类型列表或类别列表)。另一格式包括买断式列表。可以结合拍卖格式列表提供买断式列表(例如由加利福尼亚州圣何塞的ebay公司开发的现在购买(bin)技术),并且允许买家以通常高于项目的拍卖的起始价格的固定价格购买也通过拍卖供应出售的商品或服务。
商店引擎708允许买家将列表组合在“虚拟”商店中,该“虚拟”商店可以被卖家冠以品牌或者被买家个性化。这种虚拟商店还可以提供促销、激励以及对于买家来说特定和个性化的特征。在一个示例中,买家可以供应多个项目作为虚拟商店中的现在购买项目,提供多个项目用于拍卖,或二者的组合。
信誉引擎710允许利用网络架构100进行交易的用户106建立、构建和维护信誉。这些信誉可能会可被潜在的贸易伙伴获得并且发布给潜在的贸易伙伴。因为发布系统142支持未知实体之间的个人对人交易,根据一个实施例,用户106可能不具有可以评估潜在贸易伙伴的可信度和信用的历史或其他参考信息。信誉引擎710允许用户106(例如通过由一个或多个其它交易伙伴提供的反馈)随着时间在基于网络的发布系统中建立信誉。其它潜在交易伙伴于是可以参考该信誉以评估信用和可信度。
基于网络的发布系统的导航可以通过导航引擎712来实现。例如,导航引擎712的浏览器模块(未示出)允许用户106根据哪些列表可在发布系统142内分类来浏览各种类别、目录或库存数据结构。可以提供导航引擎712内的各种其他导航应用,以补充浏览应用。例如,导航引擎712可以包括类似于上文描述的通信模块290的通信模块。
为使可经由联网系统获得的列表尽可能可视化地进行通知且吸引人,发布系统142可以包括使用户106能够上载图像以包括在发布中并将图像涵盖在查看的列表内的成像引擎714。成像引擎714还可以从用户106接收作为搜索查询的图像数据,并利用图像数据来识别图像数据所描绘或描述的项目。
列表创建引擎716允许用户106(例如,买方)方便地创建项目的列表。在一个实施例中,列表与用户106(例如,买方)希望经由基于网络的发布系统142交易的商品或服务有关。在其他实施例中,用户106可以创建作为广告或其他发布形式的列表。
列表管理引擎718允许用户106管理这样的列表。具体地,在特定用户106已经创建或发布了大量列表的情况下,管理这些列表可能是一个挑战。列表管理引擎718提供用于帮助用户106管理这些列表的多个功能(例如自动重列出、库存水平监视等)。列表管理引擎718可以包括列表模块。
列表后管理引擎720还帮助用户106进行通常在列表之后发生的多个活动。例如,在完成由一个或多个拍卖引擎704辅助的拍卖时,买家可能希望留下关于特定卖家的反馈。为此,列表后管理引擎720可以提供针对信誉引擎710的接口,从而允许买家方便地向信誉引擎710提供关于多个卖家的反馈。另一种列表后动作可以是售出项目的运送,由此列表后管理引擎720可以协助打印运送标签、估计运送成本并且建议运送商。
搜索引擎722在基于网络的发布系统142中搜索与查询匹配的发布。在示例实施例中,搜索引擎722包括能够执行对由基于网络的发布系统142发布的发布内容进行关键字搜索的搜索模块(未示出)。此外,例如,搜索引擎722可以执行先前参照自动完成服务器、会话历史服务器154和全局评分服务器152所描述的功能。搜索引擎722的功能可以在一个或多个机器上执行。在另一实施例中,搜索引擎722可以将成像引擎714接收的图像作为用于执行搜索的输入。搜索引擎722获取查询输入,并确定来自网络架构100的多个匹配(例如,存储在数据库126中的发布内容)。注意,搜索引擎722的功能可以与导航引擎712进行组合。
图7中的用户活动检测引擎724可以监视用户会话期间的用户活动,并检测用户活动级别的改变,如下面更详细地讨论的,用户活动级别的改变可以预测用户106即将进行购买。用户活动级别的改变的确切量可能会有所不同。一般的指导方针可以是监视多个会话,并检测随时间的任意显著增加(例如,活动级别在短时间内翻倍或翻三倍)。在一个实施例中,当用户活动检测引擎724检测到这种情况时,电子商务系统可以进行干预,以提供将增加的活动合并到用户106的记号池的权重记号,从而努力提高用户106被提供相关的搜索查询建议并将做出购买的概率,或者还激励用户106在电子商务系统站点上进行购买而不是转到竞争对手的网站寻求更好的购买。换句话说,通过包括作为在上述方法中的加权因素这样的干预,随时间及在购买动作之前的不同时间的活动提供基于时间针对用户106个性化定制搜索查询建议的机会。
尽管已经关于各种单个模块和引擎定义了基于网络的发布系统142的各种组件,本领域技术人员将认识到,根据示例性实施例,许多项目可以用其他方式组合或组织,并且并不是所有模块或引擎都需要存在或被实现。此外,图7中并非包括了基于网络的发布系统142的全部组件。通常,没有具体示出或论述不与示例实施例的功能直接相关的组件、协议、结构和技术(例如,争议解决引擎、忠诚度促进引擎、个性化引擎)。本文给出的说明仅提供各种示例实施例,以辅助读者理解本文中使用的系统和方法。
模块、组件和逻辑
某些实施例在本文中被描述为包括逻辑或多个组件、模块或机制。模块可以构成硬件-软件模块(例如,临时或永久地配置为通过硬件或机器可读介质上实现的代码执行专门功能的硬件)或硬件模块。“硬件模块”是能够执行某些操作的有形单元,并且可以按照某种物理方式配置或布置。在各种示例实施例中,一个或多个计算机系统(例如独立的计算机系统、客户端计算机系统或服务器计算机系统)或者计算机系统的一个或多个硬件模块(例如处理器或处理器组)可由元件(例如应用或应用部分)配置为操作为执行本文描述的特定操作的硬件-软件模块。
在一些实施例中,硬件模块可以按照机械方式、电子方式或其任意适当组合来实现。例如,硬件模块可以包括永久地被配置为执行特定操作的专用电路或逻辑。例如,硬件模块可以是专用处理器,如现场可编程门阵列(fpga)或专用集成电路(asic)。硬件模块还可以包括由软件临时配置为执行特定操作的可编程逻辑或电路。例如,硬件模块可以包括由可编程处理器执行的软件。一旦由这样的软件配置,硬件模块就变成特定的机器(或机器的特定组件),其专门定制用于执行所配置的功能,而不再是通用处理器。应理解:以机械方式、以专用和永久配置的电路或以临时配置的电路(例如由软件配置)实现硬件模块的决定可出于成本和时间的考虑。
因此,短语“硬件模块”应理解为涵盖有形实体,是在物理上构造、永久配置(例如硬线连接)或临时配置(例如编程)为以特定方式操作或执行本文描述的特定操作的实体。如本文所使用的,“硬件实现的模块”指硬件模块。考虑临时配置(例如编程)硬件模块的实施例,无需在任一时刻配置或实例化硬件模块中的每一个。例如,如果硬件模块包括被软件配置成为专用处理器的通用处理器,则通用处理器可以在不同时刻被配置为分别不同的专用处理器(例如包括不同的硬件模块)。因此,软件将特定的一个或多个处理器例如配置为在一个时刻构成特定硬件模块并在另一时刻构成不同的硬件模块。
硬件模块可以向其他硬件模块提供信息并从其他硬件模块接收信息。因此,所描述的硬件模块可以被看作通信地耦合。如果同时存在多个硬件模块,则可以通过两个或更多个硬件模块之间的信号传输(例如通过适当的电路和总线)实现通信。在多个硬件模块在不同时间配置或实例化的实施例中,可以例如通过存储并检索多个硬件模块可访问的存储器结构中的信息来实现这样的硬件模块之间的通信。例如,一个硬件模块可以执行操作并在与其通信耦合的存储设备中存储该操作的输出。另一硬件模块接着可以稍后访问存储器设备,以取得并处理所存储的输出。硬件模块还可以发起与输入或输出设备的通信,并且能够对资源(例如信息的集合)进行操作。
此处描述的示例方法的各种操作可以至少部分地由临时配置(例如通过软件)或永久配置为执行相关操作的一个或多个处理器执行。无论临时还是永久配置,这样的处理器可以构成操作为执行本文描述的一个或多个操作或功能的处理器实现的模块。如本文所使用的,“处理器实现的模块”指使用一个或多个处理器实现的硬件模块。
类似地,本文描述的方法可以至少部分地由处理器实现,其中特定处理器或多个处理器是硬件的示例。例如,方法的至少一些操作可由一个或多个处理器或处理器实现的模块执行。此外,一个或多个处理器还可操作以支持在“云计算”环境中或作为“软件即服务”(saas)执行有关操作。例如,操作中的至少一些可由计算机(作为包括处理器的机器的示例)组执行,这些操作可经由网络104(例如互联网)并经由一个或多个适当接口(例如应用程序接口(api))来访问。
某些操作的执行可以分布在处理器中,并不只驻留在单个机器中,而是布置在多个机器中。在一些示例实施例中,处理器或处理器实现的模块可以位于单个地理位置(例如,在家庭环境、办公环境或服务器群中)。在其他示例实施例中,处理器或处理器实现的模块可以分布在多个地理位置。
机器和软件架构
在一些实施例中,结合图1-7描述的模块、方法、应用等在机器和相关联的软件架构的上下文中实现。下面的章节描述了适用与所公开的实施例一起使用的代表性软件架构和机器(例如,硬件)架构。
软件架构与硬件架构一起使用,以创建针对特定用途定制的设备和机器。例如,与特定软件架构相耦合的特定硬件架构将创建移动设备,诸如移动电话、平板设备等。稍微不同的硬件和软件架构可以产生用于“物联网”的智能设备。而另一组合产生了在云计算架构中使用的服务器计算机。本文并没有介绍这样的软件和硬件架构的所有组合,因为本领域技术人员可以容易地理解在不同于本文所包含的内容的背景下如何实现本公开的各种实施例。
软件架构
图8是示出代表性软件架构802的框图800,该代表性软件架构802可以结合本文所描述的各种硬件架构一起使用。图8仅是软件架构的非限制性示例,且应该了解,可以实施许多其他架构以促进实现本文中所描述的功能。软件架构802可以在诸如图10的机器1000的硬件上执行,所述机器1000包括处理器1010、存储器1030和i/o组件1050。代表性的硬件层804被示出,并且可以表示例如图10的机器1000。代表性的硬件层804包括具有相关联的可执行指令808的一个或多个处理单元806。可执行指令808表示软件架构802的可执行指令,包括图1-7的方法、模块等的实现。硬件层804还包括存储器或存储模块810,其也具有可执行指令808。硬件层804还可以包括由812表示的其它硬件,其表示硬件层804的任何其他硬件,例如作为机器1000的一部分示出的其他硬件。
在图8的示例性架构中,软件架构802可被概念化为层的堆栈,其中每层提供特定的功能。例如,软件802可以包括诸如操作系统814、库816、框架/中间件818、应用820和表示层844等层。可选地,应用820和/或层内的其他组件可以通过软件堆栈来调用应用程序编程接口(api)调用824,并响应于api调用824接收示出为消息826的响应、返回值等等。所示出的层在本质上具有代表性,并不是所有的软件架构都具有所有层。例如,一些移动或专用操作系统可能不提供框架/中间件层818,而其他系统可以提供这样的层。其他软件架构可以包括附加层或不同层。
在各种实施例中,用于实现(例如,配置硬件以执行上述特定功能)接收器模块210、访问模块230、记号管理模块240、呈现模块280和通信模块290中的一个或多个的指令808实现在框架/中间件818中。在这些实施例中,上述提到的模块的指令808可以与在应用层实现的一个或多个模块和一个或多个硬件组件(例如,显示器、端口或通信组件、一个或多个存储器或服务器)进行交互。在一些实例中,实现搜索增强系统150的所有模块中的部分的指令808实现在框架/中间件层818中,以及用于所述模块中的一个或多个模块的部分的指令808实现在应用层820中。例如,用于原生结果模块220和扩展结果模块250的部分的指令808可以实现在框架/中间件818和应用层820中的一个或多个中。
操作系统814可以管理硬件资源并提供公共服务。操作系统814可以包括例如内核828、服务830和驱动832。内核820可以用作硬件和其他软件层之间的抽象层。例如,内核828可以负责存储器管理、处理器管理(例如,调度)、组件管理、联网和安全设置等。服务830可以为其他软件层提供其他公共服务。驱动832可以负责控制底层硬件或与底层硬件接口连接。例如,取决于硬件配置,驱动832可以包括显示驱动、相机驱动、
库816可以提供可由应用820或其他组件或层使用的公共基础设施。库816通常提供允许其他模块以与底层操作系统814功能(例如,内核828、服务830或驱动器832)直接接口连接相比更容易的方式执行任务的功能。库816可以包括可以提供诸如存储器分配功能、串操纵功能、数学功能等的功能的系统库834(例如,c标准库)。另外,库816可以包括api库836,如媒体库(例如,支持如mpeg4、h.264、mp3、aac、amr、jpg、png之类的各种媒体格式的呈现和操纵的库)、图片库(如可用于在显示器上的图形内容中呈现2d和3d的opengl框架)、数据库库(例如,可以提供各种关系数据库功能的sqlite)、web库(例如,可提供web浏览功能的webkit)等等。库816还可以包括各种各样的其他库838,以提供到应用820和其他软件组件/模块的许多其他api。
框架818(有时也称为中间件)可以提供可由应用820或其他软件组件/模块使用的更高级别的公共基础设施。例如,框架818可以提供各种图形用户界面(gui)功能、高级资源管理、高级位置服务等。框架808可以提供可以被应用820或查询项目软件组件/模块使用的广泛的其他api,其中一些可以特定于某个操作系统814或平台。
应用820包括内置应用840或第三方应用842。代表性的内置应用840的示例可以包括但不限于联系人应用、浏览器应用、书籍阅读器应用、位置应用、媒体应用程序、消息传递应用或游戏应用。第三方应用程序842可以包括任何内置应用以及各种其他应用。在具体示例中,第三方应用842(例如,由与特定平台的供应商不同的实体使用androidtm或iostm软件开发工具包(sdk)而开发的应用)可以是在移动操作系统(诸如iostm、androidtm、
应用820可以利用内置的操作系统功能(例如,内核828、服务830或驱动832)、库(例如,系统834、api836和其他库838)和/或框架/中间件818来创建用户界面以与系统的用户106进行交互。作为替代或补充,在一些系统中,与用户106的交互可以通过表示层(诸如表示层844)进行。在这些系统中,应用/模块“逻辑”可以和与用户106交互的应用/模块的方面分开。
一些软件架构利用虚拟机。在图8的示例中,这由虚拟机848示出。虚拟机848创建软件环境,其中应用/模块可以像在硬件机器(例如图10的机器1000)上执行一样执行。虚拟机848由主机操作系统(图10中的操作系统814)托管,并且通常(尽管并不总是)具有管理虚拟机848的操作以及与主机操作系统(例如,操作系统814)连接的接口的虚拟机监视器846。软件架构在虚拟机848内执行,例如操作系统850、库852、框架/中间件854、应用856或表示层858。在虚拟机848内执行的这些软件架构的层可以与先前描述的层相同,或者可以不同。
数据结构
图9是高级实体关系图,示出了各种表950,其可以在图1的数据库126内维护,以及由图1的基于网络的发布系统142和支付系统144两者使用并且支持这两个系统。用户表952可以包含图1的网络架构100(例如,基于网络的发布系统)的每个注册用户106的记录。用户106在基于网络的发布系统1012内的市场中可操作为卖家、买家或这二者。在一个示例实施例中,买家可以是具有累积值(例如,流通货币或专有货币)的用户,并因此能够用累积值来交换通过基于网络的发布系统1012提供销售的项目。
表格950还可以包括项目表954,在项目表954中维护针对可经由基于网络的发布系统交易的或已经交易的商品和服务(例如,项目)的项目记录(例如,列表)。还可将项目表954内的项目记录(例如,列表)链接到用户表952内的一个或多个用户记录,以将卖家和一个或多个实际买家或潜在买家与项目记录(例如,列表)相关联。
交易表956可包含针对每个交易(例如,购买或出售交易或拍卖)的记录,该每个交易涉及其记录存在于项目表954中的项目。
可以用订单记录来填写订单表958,其中,每个订单记录与订单相关联。每个订单进而可与其记录存在于交易表956中的一个或多个交易相关联。
结合图7的拍卖引擎704所支持的拍卖形式列表,出价表960内的出价记录可以与在基于网络的发布系统1012处接收到的出价有关。在一个示例实施例中,图7的一个或多个信誉引擎710利用反馈表962来构建和维护具有反馈分数形式的与用户106有关的信誉信息。历史表964可以维护用户106已经参与的交易的历史。一个或多个属性表966可记录涉及其记录存在于项目表954内的项目的属性信息。仅考虑这样的属性的单个示例,属性表966可指示与特定项目相关联的货币属性,该货币属性识别卖家所规定的相关项目的价格的货币。搜索表968可以存储由正在查找特定类型的列表的用户106(例如,买家)输入的搜索信息。搜索表968可以包括或以其他方式传送具有全局记号池表970和客户端记号池表972的形式的一个或多个数据表。全局记号池表970可以是如上所述的存储表示全局记号池的信息的数据表或其他数据结构。客户端记号池表972可以是存储表示上述用户106的记号池的信息的数据表或其他数据结构。
示例机器架构和机器可读介质
图10是示出了根据一些示例实施例的能够从机器可读介质(例如,机器可读存储介质)中读取指令1016并执行本文所讨论的方法中的任何一个或多个的机器1000的组件的框图。具体地,图10示出了计算机系统的示例形式的机器1000的示意图,其中可以执行指令1016(例如,软件、程序、应用、小应用、app或其他可执行代码)以使机器1000执行本文讨论的任何一种或多种方法。例如,指令1016可以使机器1000执行图3-图6的流程图。作为补充或替代,指令1016可以实现图1-图6的接收器模块210、原生结果模块220、访问模块230、记号管理模块240、扩展结果模块250、选择模块260、建议模块270、呈现模块280以及通信模块290,等等。指令1016将通用的未编程的机器1000转换成被编程为以所描述的方式执行所描述和示出的功能的特定机器。在替代的实施例中,机器1000作为独立设备操作或可以耦合(例如,联网)到其他机器。在联网部署中,机器1000可以在服务器-客户端网络环境中以服务器机器或客户端机器的能力进行操作,或者在对等(或分布式)网络环境中作为对等机器进行操作。在各种实施例中,机器1000可以包括但不限于服务器计算机、客户端计算机、个人计算机(pc)、平板计算机、膝上型计算机、上网本、机顶盒(stb)、个人数字助理(pda)、娱乐媒体系统、蜂窝电话、智能电话、移动设备、可穿戴设备(例如智能手表)、其他智能设备、网络设备、网络路由器、网络交换机、网络桥、或能够顺序地或以其他方式执行指定机器1000要采取的动作的指令1016的任意机器。此外,尽管仅示出了单个机器1000,但是术语“机器”也将被认为包括机器1000的集合,机器1000单独地或联合地执行指令1016以执行本文讨论的方法中的任何一个或多个。
机器1000可以包括处理器1010、存储器1030和i/o组件1050,其可被配置为例如经由总线1002彼此通信。在示例实施例中,处理器1010(例如,中央处理单元(cpu)、精简指令集计算(risc)处理器、复杂指令集计算(cisc)处理器、图形处理单元(gpu)、数字信号处理器(dsp)、专用集成电路(asic)、射频集成电路(rfic)、其他处理器或其任何适当组合)可以包括例如可以执行指令1016的处理器1012和处理器1014。术语“处理器”旨在包括多核处理器1010,所述多核处理器可以包括可同时执行指令1016的两个或更多个独立处理器1012、1014(也称为“核”)。尽管图10示出了多个处理器1012、1014,但是机器1000可以包括具有单个核的单个处理器1010、具有多个核的单个处理器1010(例如,多核处理)、多个具有单核的处理器1010、具有多个核的多个处理器1010或其任意组合。
存储器/存储模块1030可以包括诸如主存储器或其他存储器存储模块之类的存储器1032、以及存储单元1036,其都可以由处理器1010例如经由总线1002进行访问。存储单元1036和1032存储体现本文所述的任何一种或多种方法或功能的指令1016。在机器1000执行指令1016期间,指令1016还可以完全地或部分地驻留在存储器1032内、存储单元1036内、处理器中的至少一个内(例如,处理器1010的高速缓存存储器内)、或其任何合适的组合内。因此,存储器1032、存储单元1036和处理器1010的存储器是机器可读介质的示例。
如本文所使用的,“机器可读介质”是指能够临时或永久地存储指令1016和数据的设备,并且可以包括但不限于随机存取存储器(ram)、只读存储器(rom)、缓冲存储器、闪速存储器、光学介质、磁性介质、高速缓冲存储器、其他类型的存储器(例如,可擦除可编程只读存储器(eeprom))和/或其任何合适的组合。术语“机器可读介质”应被视为包括能够存储指令1016的单个介质或多个介质(例如集中式或分布式数据库、或相关联的缓存和服务器)。术语“机器可读介质”还将被认为包括能够存储被机器(例如机器1000)执行的指令(例如,指令1016)的任何介质或多个介质的组合,使得指令1016在被机器1000的一个或多个处理器(例如,处理器1010)执行时使机器1000执行本文所描述的方法中的任何一个或多个。因此,“机器可读介质”指单个存储装置或设备、以及包括多个存储装置或设备的“基于云”的存储系统或存储网络。
i/o组件1050可以包括用于接收输入、提供输出、产生输出、发送信息、交换信息、捕获测量等的各种组件。包括在特定机器中的特定i/o组件1050将取决于机器的类型。例如,诸如移动电话之类的便携式机器可能会包括触摸输入设备或其他这样的输入机构,而无头服务器机器可能不包括这样的触摸输入设备。应当理解,i/o组件1050可以包括图10中未示出的许多其他组件。可以根据功能将i/o组件1050分组,以仅用于简化以下讨论,并且分组不以任何方式进行限制。在各种示例实施例中,i/o组件1050可以包括输出组件1052和输入组件1054。输出组件1052可以包括可视组件(例如显示器,比如等离子体显示面板(pdp)、发光二极管(led)显示器、液晶显示器(lcd)、投影仪或阴极射线管(crt))、声学组件(例如,扬声器)、触觉组件(例如,振动马达、阻抗机构)、其他信号发生器等。输入组件1054可以包括字母数字输入组件(例如,键盘、被配置为接收字母数字输入的触摸屏、光电键盘或其他字母数字输入组件)、基于点的输入组件(例如,鼠标、触摸板、轨迹球、操纵杆、运动传感器或其他定点仪器)、触觉输入组件(例如,物理按钮、提供触摸或触摸手势的位置和力的触摸屏、或其他触觉输入组件)、音频输入组件(例如,麦克风)等。
在另一些示例实施例中,i/o组件1050可以包括生物测定组件1056、运动组件1058、环境组件1060或位置组件1062、以及许多其他组件。例如,生物测定组件1056可以包括用于检测表现(例如,手表现、面部表现、语音表现、身体姿势或眼睛跟踪)、测量生物信号(例如,血压、心率、体温、汗水或脑波)、识别人(例如,语音识别、视网膜识别、面部识别、指纹识别或基于脑电图的识别)等的组件。运动组件1058可以包括加速度传感器组件(例如,加速度计)、重力传感器组件、旋转传感器组件(例如,陀螺仪)等。环境组件1060可以包括例如照度传感器组件(例如,光度计)、温度传感器组件(例如,检测环境温度的一个或多个温度计)、湿度传感器组件、压力传感器组件(例如气压计)、声学传感器组件(例如,检测背景噪声的一个或多个麦克风)、接近传感器组件(例如,检测附近物体的红外传感器)、气体传感器(例如,为安全而检测有害气体浓度或测量大气中的污染物的气体检测传感器)、或可以提供对应于周围物理环境的指示、测量或信号的其他组件。位置组件1062可以包括位置传感器组件(例如,全球定位系统(gps)接收机组件)、高度传感器组件(例如,高度计或检测气压的气压计(根据气压可以导出高度))、方向传感器组件(例如,磁力计)等。
可以使用各种各样的技术来实现通信。i/o组件1050可以包括通信组件1064,其可操作为分别通过耦合1082和耦合1072将机器1000耦合到网络1080或设备1070。例如,通信组件1064可以包括网络接口组件或与网络1080接口连接的其他合适设备。在另一些示例中,通信组件1064可以包括有线通信组件、无线通信组件、蜂窝通信组件、近场通信(nfc)组件、
此外,通信组件1064可以检测标识符或包括可操作以检测标识符的组件。例如,通信组件1064可以包括射频识别(rfid)标签读取器组件、nfc智能标签检测组件、光学读取器组件(例如,用于检测一维条形码(如通用产品代码(upc)条形码)、多维条形码(如快速响应(qr)码)、aztec码、数据矩阵(datamatrix)、数据字(dataglyph)、maxicode、pdf417、超级码、统一商业码缩减空间符号(uccrss)-2d条形码、以及其他光学代码)的光学传感器)、或声学检测组件(例如,识别带标签的音频信号的麦克风)。此外,可以经由通信组件1064来导出各种信息,例如经由互联网协议(ip)地理位置的位置、经由
传输介质
在各种示例实施例中,网络1080的一个或多个部分可以是自组织网络、内联网、外联网、虚拟专用网(vpn)、局域网(lan)、无线lan(wlan)、广域网(wan)、无线wan(wwan)、城域网(man)、互联网,互联网的一部分、公共交换电话网络(pstn)的一部分、普通老式电话服务(pots)网络、蜂窝电话网络、无线网络、
指令1016可以经由网络接口设备(例如,包括在通信组件1064中的网络接口组件)使用传输介质并且利用多个公知的传输协议(例如,超文本传输协议(http))通过网络1080发送或接收。类似地,可以使用传输介质经由耦合1072(例如,对等耦合)向设备1070发送或从其接收指令1016。术语“传输介质”应被认为包括能够存储、编码或携带用于被机器1000执行的指令1016的任意无形介质,并且包括用于促进该软件的通信的数字或模拟通信信号或其他无形介质。术语载体介质包括能够承载可由处理器执行的一组指令的任何介质,并且包括机器可读介质和传输介质。
语言
在该说明书中,复数实例可以实现被描述为单数实例的组件、操作或结构。虽然一个或多个方法的各个操作被示意和描述为分离的操作,但是各个操作中的一个或多个可以同时执行,并且无需按所示顺序执行操作。在示例配置中被示为分离组件的结构和功能可以被实现为组合结构或组件。类似地,被示为单个组件的结构和功能可以被实现为分离的组件。这些和其他变型、修改、添加和改进落入本主题的范围内。
尽管已经参考具体示例实施例描述了本发明主题的概述,但是在不脱离本公开的实施例的更宽范围的情况下,可以对这些实施例进行各种修改和改变。本发明主题的这些实施例在本文中可以单独地或共同地由术语“发明”提及,以仅仅为了方便,并且不旨在自动地将本申请的范围限制为任何单个公开或发明构思(如果事实上公开了一个以上)。
本文充分详细地描述了示出的实施例以使得本领域技术人员能够实现公开的教导。可以利用并根据这些实施例得出其他实施例,从而可以在不脱离本公开的范围的情况下做出结构和逻辑上的替换和改变。因此,该“具体实施方式”不应当看做是限制意义,并且各种实施例的范围仅通过所附权利要求以及权利要求的等同物的全部范围来限定。
如本文所使用的,术语“或”可以被解释为包括性或排他性的意义。此外,可以针对本文中描述为单个实例的资源、操作或结构提供多个实例。另外,各种资源、操作、模块、引擎和数据存储之间的边界在某种程度上是任意的,并且在具体说明性配置的上下文中示出了特定操作。设想了功能的其他分配,并且这些分配可以落入本公开的各种实施例的范围内。一般来说,在示例配置中作为单独资源呈现的结构和功能可以被实现为组合的结构或资源。类似地,作为单个资源呈现的结构和功能可以被实现为单独的资源。这些和其他变型、修改、添加和改进落入由所附权利要求表示的本公开的实施例的范围内。因此,说明书和附图应当被看做说明性的而不是限制意义的。
除非另行具体说明,本文使用诸如“处理”、“计算”、“运算”、“确定”、“呈现”、“显示”等词语的讨论可以指操纵或变换被表示为一个或多个存储器(例如易失性存储器、非易失性存储器或其任意组合)、寄存器或接收、存储、发送或显示信息的其他机器组件内的物理(例如电子、磁或光学)量的数据的机器1000(例如计算机)的动作或过程。此外,除非另行具体说明,如专利文献中常见的,本文中的术语“一”或“一个”用于包括一个或多于一个实例。最后,如本文所使用的,除非特别说明,连词“或”指非排他的“或”。