具体实施方式
现在将参考附图更详细地描述本发明,附图中示出了本发明的实施例。然而,本发明可以用多种不同的形式实现,而不应被解释为限于此处所述的实施例;而是相反,提供了这些实施例,使得本揭示全面和完整,且向本领域的技术人员完全传达了本发明的范围。根据本发明的实施例,此处所述的方法可以被实现在单个独立的计算机系统上,但更普遍地实现在互连以形成分布式计算机网络的多个计算机系统上。图1示出了根据本发明的查询建议系统100的一个实施例。系统100可在任何软件应用程序或操作系统中操作。该系统以常规的方式接收用户查询102,并将该查询传递给搜索引擎(未示出)。同时,用户查询102被传递给查询建议模块104。查询建议模块104接收用户查询102,分析该查询,并在某些条件下(以下更详细描述)向用户提供用户可能选择使用的备选查询建议106。
查询建议模块104基本上包含两个模块:查询分析器模块108和相关性处理器模块110。查询分析器模块108将查询供应给相关性处理器模块,以获取关于潜在备选查询单词的相关性信息。这些备选查询单词及其关联性然后又被反馈回查询分析器108,后者然后确定是否提供一个或多个备选查询建议106。
图2示出了用于实现本发明的实施例的示例性环境200。环境200包括形为计算机210的通用计算设备。计算机210的组件可以包括,但不限于,处理单元220、系统存储器230及将包括系统存储器在内的各种系统组件耦合至处理单元220的系统总线221。系统总线221可以是若干类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线和使用各种总线体系结构中的任一种的局部总线。作为示例,而非限制,这样的体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、扩展的ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线、加速图形端口(AGP)总线和外围部件互连(PCI)总线(也被称为Mezzanine总线)。
计算机210通常包括各种计算机可读介质。计算机可读介质可以可由计算机210访问的任何可用介质,且包括易失性和非易失性介质、可移动和不可移动介质。作为示例,而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现的用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或能用于存储所需信息且可以由计算机210访问的任何其它介质。通信介质通常具体化为诸如载波或其它传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,且包含任何信息传递介质。术语“已调制数据信号”指的是这样一种信号,其一个或多个特征以在信号中编码信息的方式被设定或更改。作为示例,而非限制,通信介质包括有线介质,诸如有线网络或直接线连接,以及无线介质,诸如声学、RF、红外线和其它无线介质。上述中任一个的组合也应包括在计算机可读介质的范围之内。
系统存储器230包括易失性和/或非易失性存储器形式的计算机存储介质,诸如只读存储器(ROM)231和随机存取存储器(RAM)232。基本输入/输出系统233(BIOS)包含有助于诸如启动时在计算机210中元件之间传递信息的基本例程,它通常存储在ROM 231中。RAM 232通常包含处理单元220可以立即访问和/或目前正在操作的数据和/或程序模块。作为示例,而非限制,图2示出了操作系统234、应用程序235、其它程序模块236和程序数据237。
计算机210也可以包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图2示出了从不可移动、非易失性磁介质中读取或向其写入的硬盘驱动器241,从可移动、非易失性磁盘252中读取或向其写入的磁盘驱动器251,以及从诸如CD ROM或其它光学介质等可移动、非易失性光盘256中读取或向其写入的光盘驱动器255。可以在示例性操作环境下使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括,但不限于,盒式磁带、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器241通常由不可移动存储器接口,诸如接口240连接至系统总线221,磁盘驱动器251和光盘驱动器255通常由可移动存储器接口,诸如接口250连接至系统总线221。
以上描述和在图2中示出的驱动器及其相关联的计算机存储介质为计算机210提供了对计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图2中,硬盘驱动器241被示为存储操作系统244、应用程序245、其它程序模块246和程序数据247。注意,这些组件可以与操作系统234、应用程序235、其它程序模块236和程序数据237相同或不同。操作系统244、应用程序245、其它程序模块246和程序数据247在这里被标注了不同的标号是为了说明至少它们是不同的副本。用户可以通过输入设备,诸如图形输入板(电子化仪)264、麦克风263、键盘262和定点设备261(通常指鼠标、跟踪球或触摸垫)向计算机210输入命令和信息。其它输入设备(未示出)可以包括操纵杆、游戏垫、圆盘式卫星天线、扫描仪等。这些和其它输入设备通常由耦合至系统总线的用户输入接口260连接至处理单元220,但也可以由其它接口或总线结构,诸如并行端口、游戏端口或通用串行总线(USB)连接。监视器291也可与触摸屏面板293等集成,后者可以将诸如手写等数字化输入经由诸如触摸屏接口292等接口输入至计算机系统210中。注意,监视器和/或触摸屏面板可以被物理耦合至包含计算设备210的外壳,诸如在图形输入板类型个人计算机中,其中触摸屏面板293实质上用作图形输入板264。另外,诸如计算设备210等计算机也可以包括其它外围输出设备,诸如扬声器295和打印机296,它们可以通过输出外围接口294等连接。
计算机210可使用至一个或多个远程计算机,诸如远程计算机280的逻辑连接在网络化环境中操作。远程计算机280可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见网络节点,且通常包括上文相对于计算机210描述的许多或所有元件,尽管在图2中只示出存储器存储设备281。图2中所示逻辑连接包括局域网(LAN)271和广域网(WAN)273,但也可以包括其它网络。这样的网络环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。
当在LAN网络环境中使用时,计算机210通过网络接口或适配器270连接至LAN 171。当在WAN网络环境中使用时,计算机210通常包括调制解调器272或用于通过诸如因特网等WAN 273建立通信的其它装置。调制解调器272可以是内置或外置的,它可以通过用户输入接口260或其它合适的机制连接至系统总线221。在网络化环境中,相对于计算机210所描述的程序模块或其部分可以存储在远程存储器存储设备中。作为示例,而非限制,图2示出了远程应用程序285驻留在存储器设备281上。可以理解,所示的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其它手段。
在了解了计算环境之后,参考被执行来实现具体化本发明的各个实施例的进程的逻辑操作来描述本发明的实施例。逻辑操作被实现为(1)计算机实现的步骤的序列或运行在计算系统上的程序模块,和/或(2)计算系统内的互连机器逻辑集成电路或集成电路模块。实现是依赖于对实现本发明的计算系统的性能要求的选择问题。从而,组成此处所述的本发明的实施例的逻辑操作指的是名称不一的操作、结构化设备、动作或模块。本领域技术人员可以认识到,这些操作、结构化设备、动作和模块可以用软件、固件、专用数字逻辑及其任何组合来实现,而不背离如所附权利要求书内所述的本发明的精神和范围。
现在转向图3,提供了查询建议模块104的更详细的模块图。查询分析器模块108从相关性模块110中三个定义的源处取得信息:语料库索引302、流行度表模块304和单词生成器模块306。
语料库索引302基本上是存在于应用程序能访问的文档的语料库(域)中的所有单词的单词典。全文索引是从文档中提取单词并在词汇上排列单词用于快速查寻的过程。每一单词都与包含该单词的文档列表相关联。这一单词至文档集的关联的列表被称为(反向)索引。语料库索引302是动态的,且当调用应用程序访问文档时,它们可以被添加至语料库,使得语料库随使用的系统100而在大小上增长。语料库索引302包括语料库中的所有语言中的单词,且还包括n字母组以及单词。应用程序可用的文档的语料库中的每一单词/n字母组与其中使用它的文档相关联。因此,每一单词都与文档列表相关联。该列表被称为反向索引。另外,每一单词可以与文档内其使用频率相关联。索引302中也包含每一单词的该频率值。
流行度表模块304检查语料库索引302,并编译与语料库索引302中每一单词相关联的流行度值。该流行度值也随新文档被添加至调用应用程序能访问的文档的语料库、从中移除或修改来持续地更新。流行度值可以基于文档中特定单词或n字母组出现的次数、包含该单词或n字母组的语料库中的文档数、或者单词或n字母组在所有语料库文档中总计出现的绝对值。较佳地,流行度值是基于其中出现单词或n字母组的语料库的文档数,且由此是单词出现频率的度量。低频率的单词有时不被添加至流行度列表,以保持流行度列表在大小上可管理。
使用流行度表模块304中的单词来构造生成器词典308。词典308其中含有一个或多个过滤器312来过滤掉噪声单词。噪声单词是那些出现太过频繁而对查询建议过程无所贡献的单词。此类单词为冠词、介词等,以及诸如英语中的“and”与“or”、德语中的“und”或西班牙语中的“y”等连接词。词典308因此将这些单词从流行度表中取出,过滤掉噪声单词,而单词生成器模块306使用所得的单词列表。或者,过滤器312可以被结合在流行度表模块304中。无论在哪种情况下,过滤器312都可以用来舍弃其出现频率超出预定值的任何单词。过滤器也可以被提供来过滤很少使用的那些单词。
单词生成器模块306从词典308中取出。它分析词典308中的单词,以找出与查询分析器中检查的查询单词类似的拼写和句法,并基于类似拼写和/或句法向分析器108提供建议的单词。单词生成器模块306本质上是生成近似拼写列表的单词生成器或拼写检查器。在本发明的实施例中被用作单词生成器的拼写检查器是常规的MicrosoftWord SpellAPI,它建议查询单词的近似拼写,将结果与词典308进行比较,以生成提供给查询分析器模块108的建议。或者,存在一族UNIX函数(grep、agrep、egrep等),它们生成与正被检查的单词具有类似拼写的单词。例如,为搜索拼写上近似“airpalne”的单词的目录,可以写为“agrep-e airpalne”,并期望也能接收含有单词“airplane”的文件。一般而言,可以使用任何近似模式匹配算法来生成类似的单词。也可以使用这些中的一个,而不是之前描述的拼写检查器。
图4是发生在查询分析器108中以生成对用户查询102的备选建议的操作400的操作流程图。过程400在操作402开始,在那里感知到用户查询102。然后将控制传递给操作404。
在操作404中,通常为两个或多个单词的查询被标记化成单个单词或n字母组。在以下步骤中单独分析每一单词。然而,可以理解,此时,查询也可被解析为两个或三个单词的分组用于分析。在这种情况下,该方法与此处所述的单个单词方法相当类似。此外,在多个单词情况中,某些所关注的频率是一个单词可能跟随另一个单词之后的频率,而不仅是语料库内的短语的频率。也可提供并评估这些频率。一旦查询被标记化,即解析为分离的单词之后,控制转移至操作406。
在操作406中,检查第一/下一单词。分析器调用单词生成器模块306,并向单词生成器模块306提供第一单词。单词生成器模块306然后返回词典308中存在的与第一/下一查询单词近似拼写的任何单词作为查询建议单词。分析器400然后将控制传递给操作408。
在操作408中,访问流行度表模块304并返回每一查询建议单词的流行度值。控制然后转移给操作410,在那里查到的第一/下一单词的流行度值也被提供给分析器108。控制然后转移给操作412。
在操作412中,将第一/下一查询单词的流行度值与所建议的备选单词的每一流行度值进行比较。控制然后转移给查询操作414,在那里询问是否存在比用户的第一/下一查询单词更流行的查询建议单词。如果用户的第一/下一查询单词的流行度值比所建议的一个或多个单词的流行度值大,那么回答为否,且不返回任何备选建议。控制转移回操作406,用于检查下一查询单词。另一方面,如果所建议的单词中的一个或多个比用户的查询单词更流行,那么操作414中的回答为是,控制转移给操作416。
在操作416中,查询建议单词或n字母组被记录以供分析器108返回给用户作为备选查询单词,或者可以立即向用户显示,或者可以等到检查完查询中的所有单词。无论在何种情况下,控制然后被传递给操作418,在那里分析器检查下一查询单词。控制然后被转移给查询操作420。
在查询操作420中,查询是否还存在要被评估的标记化的用户查询单词。如果回答为是,那么控制再次转移回给操作406,在那里检查下一单词。另一方面,如果回答为否,那么用户查询中没有其它单词,控制传递给结束操作422,在那里如果还剩下任何要被发送的备选查询建议单词,那么将其作为备选单词显示给用户。
最初检查所有的文档,并生成出现在文档的语料库中的单词的索引。当文档被添加至语料库时,可以生成新的索引、流行度表和词典,并替换现有的索引、流行度表和词典。或者,这些可以在添加新文档时更新。
尽管以对结构化特征、方法性动作以及包含此类动作的计算机可读介质专用的语言描述了本发明,但可以理解,在所附权利要求书中定义的本发明不必限于所述的特定结构、动作或介质。从而,特定结构、动作或介质仅作为实现所要求保护的本发明的较佳形式而在此处揭示。它们不应被解释为对本发明范围的限制。而且,对本领域的普通技术人员而言,容易想到各种变化、改变和替换。从而,所有这样的变化、改变和替换也属于由所附权利要求书定义的本发明的预期的宽泛的范围和含义。