发明内容
本发明提供了用于细化搜索查询的改进方法,其中所述搜索查询被设计用于从文档索引中获取文档。本发明是有利的,因为它没有依赖于每次更新文集时必须重新计算的交叉文档数据结构或全局统计。此外,本发明在查询时(运行时)需要相当少的I/O资源,这是因为与已知方法相比,在运行时为产生包括了短语、单个词项和专用语(包括查询项的短语)的混合物的相关建议的短列表而需获取的结果更少。在本发明中,文档索引中的每个文档在查询前的某一时刻被处理,例如在文档索引生成期间。在此处理中,文档索引中的每个文档被检查,以判断该文档是否包括适合于包括在用于该文档的经分级候选项的集合中的任何项。当文档包括这样的项时,用于该文档的文档索引条目被配置以包括与该文档相关联的项的集合。该项的集合被称为经分级候选项集合。
当接收到查询时,文档的初始组从文档索引中被获取。文档的初始组根据对于该查询的相关性而被分级。文档的“初始组”可以是被识别为可能与该查询相关的文档的全部集合的子集。在一个实施例中,在初始组中的文档数目是被识别为可能与该查询相关的所有文档与通常在20和200之间的一个参数值(例如50)之中的小者。然后,对出现在与经分级文档的初始组中的一个文档相关联的任意经分级候选项集合中的每个候选项应用加权功能。响应于查询,级别高的候选项与经分级文档的初始组一道被呈现出来。对呈现的候选项之一进行的用户选择致使该项被添加到原始的搜索查询中。
本发明的一个方面提供了一种用于细化接收到的查询的方法,接收到的查询被处理,以便生成对应于接收到的查询的经分级文档的初始组。在经分级文档的初始组中的全部或部分文档中的每个文档都分别与其相应的经分级候选项的集合相关联。多个相应的候选项的集合中的每个候选项被嵌入到经分级文档的初始组中的文档中。每个候选项可以是一个单词或一个短语。此外,在优选实施例中,在处理接收到的查询之前的某一时刻构建多个相应的候选项集合。该方法继续选择处于多个相应的经分级候选项的集合的一个或多个集合中的候选项的子集。选择功能被用于选择该候选项的子集。然后,响应于接收到的查询,经分级文档的初始组以及候选项的子集被呈现出来。在某些实施例中,使用经修订的查询来重复上述处理、选择和呈现步骤,所述经修订的查询包括原始接收到的查询和来自候选项子集的候选项。
在某些实施例中,与一个文档相关联的候选项的集合是通过将文档中的项与候选项主列表相比较来构建的。当该项在候选项主列表中时,该项被添加到与该文档相关联的候选项集合中以作为一个候选项。在某些实施例中,候选项的主列表包括多于10,000,000个候选项。该比较被重复,直到文档中的最大数目项已被考虑,或阈值数目唯一项已被考虑为止。然后,将加权和/或选择功能应用到候选项的集合,以产生经分级候选项的集合。通常,该加权和/或选择功能对候选项分级,然后应用截断(cutoff),该截断只保留了高级别的项。在某些实施例中,针对特定语言(例如英语、西班牙语、法语、德语、葡萄牙语、意大利语、俄语、中文或日语)来优化候选项的主列表。在某些实施例中,经分级文档的初始组中的全部或部分文档中的每个文档具有已优化了候选项主列表的同一语言。
在某些实施例中,文档索引中的每个文档在查询处理之前的某一时刻(例如在最初文档标引期间)被分类。在某些实施例中,存在两种可能的类别,第一家庭友好类和第二非家庭友好类。文档类别的指定被包括在文档索引中。
在某些实施例中,经分级候选项集合中的如下单个词候选项被丢弃:该单个词候选项实际上是该经分级候选项集合中的一个更复杂项的子集(子串)。此外,相信该更复杂项具有出现在与经分级候选项的集合相关联的文档的全部或上部中的该简单项的实例数目。该丢弃和相信步骤被重复,直到不再有作为经分级候选项的集合中的更复杂候选项的子集的单个词候选项为止。此外,可以将同样过程应用到作为更复杂项的子集的多个词候选项。
在某些实施例中,经分级候选项的集合中的作为该集合中的第二项的正确拼写变体(orthographic variant)或屈折变体(inflectional variant)的候选项被丢弃。此外,相信第二项具有出现在与经分级候选项的集合相关联的文档的全部或上部中的该正确拼写变体或屈折变体项的实例数目。该丢弃和相信步骤被重复,直到不再有作为经分级候选项的集合中的另一项的正确拼写变体或屈折变体的项为止。在某些实例中,第二项在候选集合中被重写为包括(例如多个)正确拼写变体或屈折变体的组合项,其中在相关文档的全部或上部中出现最多次的变体首先出现在组合项中。在某些实施例中,当组合项被选择用于包括到被呈现的候选项的子集中时,只有组合项的第一部分被呈现给用户。
本发明的某些实施例提供了各种选择功能,它们被用于响应于查询而选择将被呈现的候选项的子集。在某些实施例中,该选择功能利用在与经分级文档的初始组中的顶级文档相关联的候选项集合中找到的信息。该信息包括两种形式的分级。首先,文档被分级。其次,与经分级文档的初始组中的文档相关联的每个经分级候选项集合中的每个候选项被分级。
在一个实施例中,选择功能包括:(i)对与经分级文档的初始组中的顶级文档相关联的每个各自的经分级候选项集合中的每个候选项应用加权功能。如这里所使用的,在经分级文档的初始组中的每个顶级文档是具有如下级别的文档,所述级别在数字上低于某个阈值级别(例如50,就是说,顶级文档是针对该查询返回的经分级文档的初始组中的前50个文档)。例如,考虑经分级文档的初始组包括100个文档而阈值级别等于50的情况。然后,前50个文档将被看作顶级文档。接收到最高权重的这些候选项被包括到与查询结果一道呈现的候选项的子集中。在某些实施例中,由加权功能应用到候选项的权重是根据与该候选项所出现的顶级文档相关联的候选项集合的数目来确定,或根据该候选项在每个这样的经分级候选项集合中的平均位置来确定,或根据接收到的查询中的项是否在候选项中来确定,或根据该候选项中的字符数目来确定,或根据包括候选项的相关集合中的项的顶级文档的平均级别位置来确定。在某些实施例中,被加权功能应用到一个候选项的权重是根据TermCount、TermPosition、ResultPosition、TermLength和QueryInclusion的任意组合或任意加权子集来确定的,其中
TermCount是既(i)包括该候选项,又(ii)分别与一个顶级文档相关联的经分级候选项的集合的数目,
TermPosition是该候选项在既(i)包括该候选项,又(ii)分别与一个顶级文档相关联的经分级候选项的那些集合中的位置的函数(例如平均),
ResultPosition是与包括该候选项的经分级候选项的集合相关联的那些顶级文档的级别的函数(例如平均),
TermLength是该候选项中的字符数目(候选项的复杂性),以及
QueryInclusion是指示接收到的查询中的项是否在该候选项中的值。
在某些实施例中,被加权功能应用到一个候选项的权重是根据以下公式来确定的:
TermCount+TermPosition+ResultPosition+TermLength+QueryInclusion。
在某些实施例中,TermCount、TermPosition、ResultPosition、TermLength和QueryInclusion中的每一个被独立加权。在某些实施例中,被加权功能应用到候选项的权重是根据以下公式来确定的:
(TermCount*w1)+
(TermPosition*(w2+(RefinementDepth*w2′)))+
(ResultPosition*w3)+
(TermLength*(w4+(RefinementDepth*w4′)))+
(QueryInclusion*(w5+(RefinementDepth*w5′)))
其中w1、w2、w3、w4、w5、w2′、w4′和w5′是独立的权重,并且RefinementDepth是对接收到的查询已执行的处理的次数。
在某些实施例中,选择功能包括对于经分级文档的初始组中的每个文档,确定该文档的类别。然后,当文档集合中的阈值百分比的文档属于第一类别(例如家庭友好类)时,属于作为第二类别(例如非家庭友好类)的成员的文档的所有经分级候选项的集合都不被用于构成候选项的子集。
本发明的另一方面提供了与计算机系统协同使用的计算机程序产品。该计算机程序产品包含计算机可读存储介质和嵌入在其中的计算机程序机构。所述计算机程序机构包括查询细化建议引擎,其用于细化接收到的查询。该引擎包括用于处理接收到的查询,以便生成对应于接收到的查询的经分级文档的初始组的指令。在经分级文档的初始组中的全部或部分文档中的每个文档都分别与其各自的经分级候选项的集合相关联,以使其各自的经分级候选项的集合中的每个候选项被嵌入到所述文档中。每个各自的经分级候选项的集合都是在处理接收到的查询之前的某一时刻被识别出的。该引擎还包括用于根据选择功能,选择处于各自的候选项集合中的一个或多个集合中的候选项子集的指令。此外,该引擎包括用于响应于接收到的查询,呈现经分级文档的初始组以及所述候选项的子集的指令。
本发明的另一方面提供了一种包含多个统一资源定位符(URL)的文档索引数据结构。每个URL分别指定一个文档。在由多个URL分别指定的全部或部分文档中的每个文档与其各自的经分级候选项的集合相关联。在各自的经分级候选项的集合中的每个候选项包括被嵌入到与所述经分级候选项的集合相关联的文档中的候选项。此外,这些候选项通过加权功能被分级。在某些实施例中,通过以下步骤来创建各自的经分级候选项的集合:
(A)将与各自的经分级候选项的集合相关联的文档中的项与候选项的主列表相比较,其中,当所述项在候选项的主列表中时,所述项被添加到所述各自的经分级候选项的集合中,以作为一个候选项;
(B)重复所述比较,直到所述文档中的最大数目项已被考虑为止;
(C)根据加权功能对候选项分级,从而构成经分级的候选项。
具体实施方式
在典型实施例中,本发明以有效的方式生成查询细化建议的一个小集合(10到20个)(候选项的子集),这个查询细化建议的小集合可能与用户的查询高度相关,并反映出目标文档的词汇表。
如图1所示,搜索查询被客户端计算机100提交到搜索引擎服务器110。在接收到搜索查询之后,搜索引擎服务器110在文档索引120中识别与该搜索查询相关的文档。此外,搜索引擎服务器110例如按照文档与该搜索查询的相关程度或其他排列因素来排列相关文档。然后,对该有序文档集合的描述(搜索结果)被返回到客户端计算机100,以作为有序文档的集合。在本发明中,附加信息以候选项子集(搜索细化建议)的形式与有序文档的初始集合一道被返回到客户端计算机。
在转到关于服务器110如何生成候选项的子集之前,首先提供如图2所示的由搜索引擎服务器110的实施例返回的搜索结果和搜索细化建议的屏幕截图,以便更好理解本发明的优点。在图2中,用户提供初始查询(接收到的查询)132。当按下查找按钮134时,查询132被从客户端计算机100发送到搜索引擎服务器110。在接收到查询132之后,搜索引擎服务器110处理接收到的查询132,并以有序文档的初始集合以及候选项子集的形式将搜索结果和搜索细化建议发回客户端计算机100。候选项子集被显示在界面180的面板140上。具体而言,候选项子集中的每个项136与标签138一道被显示在区域140中。同时,搜索结果的列表项(有序文档的初始列表中被排列在顶端的文档)被显示在面板142中。本发明的系统和方法针对能够细化、改变或改进初始查询132的项136的识别。当用户按下标签138时,对应于标签138的项136被添加到初始查询132中,并以新查询重复整个过程。当用户按下另一标签139时,对应于标签138的项136替代初始查询132,并且搜索引擎服务器处理作为新查询的项136。在未示出的实施例中,对应于每个项136的一个或多个附加标签可以被添加到面板140。在一个示例中,存在用于向例外列表(exceptionlist)添加相应项136的标签。例如,当初始查询是“A”而用户按下用于项“B”的排除标签时,新查询变为“A”而不是“B”。除了显示在面板140中的项子集之外,有序文档的初始集合也被显示在面板140上。为了节省计算机100和服务器110之间的带宽,在典型实施例中,有序文档的初始集合通常只包括有序文档的初始集合中的每个文档的索引,以使用户可以确定初始有序文档中的每个文档的本质。这样的索引在这里仍旧被称为有序文档的初始集合。
本发明的系统和方法的概况已被公开。从该概况可知,本发明的很多优点和特征是显而易见的。本发明的新型算法向用户自动提供可以用于改进初始查询的建议项136的列表。例如,在图2中,初始查询132是“space shuttle”。响应于该初始查询,本发明的实施例提供了包括项136(例如“Challenger Disaster”)的候选项子集。将项“ChallengerDisaster”添加到初始查询或用项“Challenger Disaster”替代初始查询的做法为用户提供了很可能更接近地匹配用户兴趣的查询。通过使用新的候选项子集,用户可以在无需分析有序文档的初始集合中的文档(或其索引)的情况下建立改进的查询。因此,使用本发明,不再需要确定初始查询为何产生与用户的信息需求不直接相关的太多(或太少)结果。
现在,已经给出了本发明的概况和本发明的优点,下面将公开本发明的系统和方法的更详细描述。为此,图3示出了根据本发明一个实施例的搜索引擎服务器110。在优选实施例中,使用一个或多个计算机系统300(如图3所示)来实现搜索引擎服务器110。本领域技术人员将意识到,为处理大量查询而设计的搜索引擎可以使用比图3所示计算机系统更复杂的计算机体系结构。例如,前端服务器集合可以被用于接收查询,并将查询分发到实际处理查询的后端服务器的集合中。在这样的系统中,如图3所示的系统300将是后端服务器之一。
计算机系统300通常具有用户接口304(包括显示器306和键盘308)、一个或多个处理单元(CPU)302、网络或其他通信接口310、存储器314和一个或多个用于互连这些组件的总线312。存储器314可以包括高速随机访问存储器,还可以包括非易失性存储器,例如一个或多个磁盘存储设备(未示出)。存储器314可以包括距离中央处理单元302很远的大容量存储设备。存储器314优选地存储:
●操作系统316,其包括用于处理各种基本系统服务和执行硬件相关任务的程序;
●网络通信模块318,其用于经由一个或多个通信网络将系统300连接到各种客户端计算机100(图1)和可能的其他服务器或计算机,所述通信网络例如是因特网、其他广域网、局域网(例如可以将客户端计算机100连接到计算机300的本地无线网络)、城域网等等;
●查询处理器320,用于接收来自客户端计算机100的查询;
●搜索引擎332,用于搜索文档索引352,以找到与查询相关的文档,并用于形成与查询相关的有序文档的初始集合;以及
●查询细化建议引擎324,用于实现本发明的多个方面。
查询细化建议引擎324可以包括可执行的程序、子模块、表和其他数据结构。在一个实施例中,细化建议引擎324包括:
●选择功能326,用于识别候选项的子集,以使其与有序文档的初始集合一道显示出来;以及
●结果格式化模块328,用于格式化候选项的子集和有序文档的初始集合以用于显示。
本发明的方法在由查询处理器320接收到查询132之前以文档标引器344的行为开始。文档标引器344使用网上搜掠和标引技术来建立文档索引352。但是,除了该传统功能之外,文档标引器344还包括进一步处理文档索引352中的文档的新型程序模块。例如,文档标引器344包括“候选项集合构建器”346。在优选实施例中,构建器346检查文档索引352中的每个文档。在其他实施例中,只有满足预定标准的文档(例如包含具有预定语言集合中的一种语言的文本的文档)被构建器346检查。
对于每个被检查的文档,构建器346判断该文档是否包括嵌入在该文档中的任意候选项。存在很多不同的构建器346可以实现该任务的方法,并且所有这些方法都被包括在本发明的范围内。在一个实施例中,通过使来自该文档的项与候选项的主列表342相匹配来实现该任务。候选项的主列表342包括所有可能的候选项。在某些实施例中,列表342是具有有效候选项列表的Unix型文本文件。列表342的代表性格式是每行一个候选项,列表342中的每个候选项是唯一的、经UTF-8编码的,并且去除了所有逗号、tab、行末尾和@符号。在某些实施例中,主列表被限定为名词和名词短语(这些种类的项最可能有益于被用作查询项),其中明确去除了具有有限的查询细化值的任意名词短语。
在典型的实施例中,只有文档索引352中的每个文档的第一部分被检查以找到候选项。例如,在某些情况下,构建器346只检查文档索引352中的每个文档的前100,000个字节。在某些实施例中,构建器346检查文档索引352中的一个文档,直到该文档中的最大数目的项(例如100、1000、5000等)已被考虑为止。在某些实施例中,当文档中的阈值数目的唯一项已被发现出现在主列表342中(例如1000个项)时,终止对该文档中的候选项的搜索。
本发明的某些实施例提供多于一个候选项的主列表342。每个主列表342被优化以用于不同的语言。例如,第一列表342被优化以用于英语,而第二列表342被优化以用于西班牙语。从而,英语列表342将包括在英语文档中找到的信息项,而西班牙语列表342将包括在西班牙语文档中找到的信息项。类似地,本发明的某些实施例包括被优化以用于法语、德语、葡萄牙语、意大利语、俄语、中文或日语的列表。在本发明的某些实施例中,列表342被优化以用于其他类型的类别。例如,在某些实施例中,列表342被优化以包括科学项、时尚项、工程项或旅行项。但是,在优选实施例中,每个主列表342包括尽可能多的信息项。实际上,主列表342可以包括多于10,000,000个项,并通常包括远远多于1,000,000个项。这些项中的每一个可以是一个词或一个短语。为了清楚,一个代表性短语是“Challenger Disaster”。
用于确定文档中使用的主要语言的方法是本领域公知的。因此,在本发明的某些实施例中,构建器346使用这样的方法(i)确定正被检查的文档的语言,然后(ii)使用被优化以用于与该文档相同语言的主列表342。
在位于主列表342中的一个或多个候选项被嵌入在索引352中的一个文档的顶部部分(例如前100K字节)中的情况下,由构建器346检查该文档的最终结果是这些项的标识。当这些项被构建器346识别出时,它们以有序形式被添加到与该文档相关联的数据结构中。该数据结构被称为候选项集合。在索引352已被构建器346检查之后,索引352中的每个已在其顶部部分嵌入了候选项的文档将分别与包括这些项的候选项集合相关联。因此,例如,如果在索引352中存在两个包括候选项的文档(即A和B),则第一候选项集合将与文档A相关联,而第二候选项集合将与文档B相关联。第一候选项集合将包括嵌入在文档A的顶部部分的每个候选项,而第二有序候选项集合将包括嵌入在文档B的顶部部分的每个候选项。实际上,每个候选项集合都在内部被排列以构成其各自的候选项的有序集合,如下面将更详细公开的。
图4示出了构建器346对文档索引352中的文档402的检查如何导致对文档索引352的修改。在构建器346检查索引352中的文档之前,索引352中的每个文档402包括文档402的统一资源位置(URL)406以及一组特征值408。特征值408包括与该文档相关联的元数据,并包括用于在排列被识别为可能与查询相关的文档时协助搜索引擎的值。特征值可以包括对文档的文件格式的指示、文档的长度、到该文档的已知进入链接(来自其他文档)的数目、文档的题目(例如在该文档被选为响应于一个查询时用于显示的题目)等等。在文档402已被构建器346检查(图3)之后,候选项集合410与该文档402相关联。
在本发明的某些实施例中,以如下方式实现用于使文档中的一个项与列表342中的一个候选项相匹配的方法:确保该项与列表342中可能最复杂的候选项相匹配。例如,考虑项“AB”被嵌入在索引352中的一个文档中的情况,其中A和B都是单词。此外,假设列表342包括“A”、“B”和“AB”。这时,文档中的项“AB”将于列表342中的“AB”相匹配,而不是与“A”或“B”相匹配。存在多种可能实现这种匹配的方法,并且所有这些匹配方案都在本发明的范围内。一种这样的匹配方法是使用具有以下逻辑的“贪婪的从左到右算法”:
对于文档中的每个具有“ABCD…”形式的句子,被如下检查:
A是列表342中的一个候选项的前缀?
○是:“AB”是列表342中的一个候选项的前缀?
■是:“ABC”是列表342中的一个候选项的前缀?
●是->继续以相同方式穿过该句子
●否:将“AB”添加到与该文档相关联的那个候选项集合410中,并移动到C以考虑“CDEF…”
■否:将“A”添加到与该文档相关联的那个候选项集合410中,并移动到B以考虑“BCDE…”
○否:移动到B并开始考虑“BCDE…”
这样的算法确保列表342中的最复杂的项与文档中的一个项相匹配,其中“句子”是文档中的某个任意量,例如一行或文档中的两个短语边界之间或其他断点之间的部分,而“ABCD…”是项中的没个单词。在相关的方法中,当候选项集合410中的第一候选项是该候选项集合中的第二候选项的子集时,构建器346丢弃该第一候选项。
在本发明的某些实施例中,有序项集合410中的每个候选项在与该集合410相关联的文档的全部或顶部部分(例如前100K字节)中出现的次数被跟踪。例如,如果集合410中的候选项“A”在与集合410相关联的文档的顶部部分出现12次,则记录项“A”在文档中出现12次的指示,并将该指示用于为了确定哪些候选项将保留在有序候选项的最终集合中而设计的加权方案中。
在某些实施例中,每当一个项出现在相关文档的前阈值数目个单词中的情况下,该项出现在该文档中的次数的指示被向上加权(upweight)。例如,考虑第一阈值的值是15个单词的情况。此外,在该示例性情况下,候选项“A”恰好出现两次。短语“A”的第一次出现是在15个单词界限之前,而“A”的第二次出现是在15个单词界限之后。在用于该示例性情况的加权方案中,出现在前15个单词中的单词接收两倍的权重。从而,在与文档相关联的候选项集合402中,候选项“A”将与如下指示一道被列出,所述指示表明该项在文档顶部部分出现(2*1+1)次,即3次。本领域技术人员将意识到,更复杂形式的第一阈值是可能的。例如,应用于候选项计数的加权可以是该候选项在文档中的位置的函数。例如,该函数可以是一个线性函数(或非线性函数,或分段的线性函数),该函数的最大值位于文档的始端,而最小值位于该文档的末端。可替换地,可以以筐(basket)的形式应用加权,其中在文档开始处(第一筐)存在大权重,在文档的第二部分(第二筐)存在较低权重,在文档的第三部分(第三筐)存在更低权重,以此类推。
在如下的实施例中:其中(i)候选项出现在相关文档中的次数的指示,以及(ii)当有序候选项集合410中的第一候选项是该有序候选项集合中的第二候选项的子集时,构建器346丢弃该第一候选项,在这样的实施例中,相信第二候选项具有由构建器346在文档中识别出第一候选项的次数。
除了构建器346之外,标引器344还包括冗余过滤器348。过滤器348被设计用于去除可能出现在候选项集合中的正确拼写变体或屈折变体。项的正确拼写变体是对于项的可替换的正确拼写。项的屈折变体具有项的可替换后缀或重音形式。在某些实施例中,正确拼写变体和/或屈折变体被存储在变体列表360(图3)中。然后,冗余过滤器348的工作是确保不会有候选项集合410中的一对候选项出现在变体列表360中。当候选项集合410中的一对候选项处于变体列表360中时,过滤器348将该对中的一个项从集合410中丢弃。在某些实施例中,该对中的第一项将被从集合410中有效地丢弃,而该对中的第二项将被保留。但是,在某些实施例中,第二项将被修改,以使其与被丢弃的第一项相结合。例如,如果项A和B是屈折变体或正确拼写变体,则其中一个项(例如A)将被丢弃,而另一项(B)被保留。此外,项B将被重写为A,B。该特征是有利的,因为它保留了关于可以被本发明的更高层模块(例如查询细化建议引擎324)使用的下层文档的有用信息。通常,在被这样合并的正确拼写变体或屈折变体候选项出现的情况下,引擎324将只提供第一(未被丢弃的)项。例如,在重写项A,B的情况下,只有项“A”被包括在呈现于面板140上的候选项的子集中。通常,出现在列表360中的一对项中被丢弃的项是在相关文档中出现频率较低的那个项。在某些实施例中,其区别仅在于出现或不出现某些噪声单词(例如a、the、who、what、where等等)的候选项以与包括了正确拼写变体或屈折变体的候选项被折叠在一起的方式相同的方式被折叠。同样,在某些实施例中,在给定的候选项集合中的两个项之间的差异仅在于出现或不出现标点符号的情况下,这两个项以与包括了正确拼写变体或屈折变体的候选项被折叠在一起的方式相同的方式被折叠。在某些实施例中,在候选项集合中的每个短语都被转换成相同的字母(例如小写字母)。该规则的一个例外在于,具有6个或更少大写字母字符的单个单词这样的项不被转换为小写字母,因为,这样的项可能是一个缩写词。
在如下的实施例中:其中(i)候选项出现在相关文档中的次数的指示,以及(ii)过滤器348由于候选项集合中的第一候选项是该集合中的第二候选项的正确拼写变体或屈折变体而丢弃第一候选项,在这样的实施例中,相信第二候选项具有由构建器346在文档中识别出第一候选项的次数。换句话说,当两个候选项之间的差异仅在于其中一个候选项包括如下单词时,丢弃其中一个候选项,其中所述单词是另一候选项中的相应单词的屈折变体或正确拼写变体。这种情况的一个示例出现在候选项为“towtruck”和“tow trucks”的情况下。在该示例中,这两个候选项之间的差异仅在于第一项中的“truck”的写法和第二项中的“trucks”的写法。
关于文档标引器344的很多细节已被公开。在此阶段有必要参考图5的流程图,该图公开了标引器344的某些实施例所采取的步骤。在其其他标引任务(例如对由网络爬寻器找到的文档中的单词的传统标引)中的全部或部分之后,标引器344将控制传递到构建器346,构建器346选择已被标引的文档(图5,步骤502)。
在步骤504中,将文档中的项与候选项的主列表342相比较。如果该项在主列表342中(506的是),则将该项添加到与该文档相关联的候选项集合402中(510)。注意,步骤504可以更复杂的匹配方案,例如如上所述的“贪婪的从左到右算法”
在某些实施例中,被比较的文档是网页。因此,必须执行某些关于哪些单词构成适合于与主列表342相比较的有效单词的判断。在一种方法中,实际上是网页的文档被解析以找到用于短语提取的文本。在一个实施例中,使用所有“可视”文本再加上元页描述来执行步骤504中的短语匹配,并且这样的短语不包括HTML代码、java脚本等等。为了得到有效短语,网页中的“短语边界”(例如表的标签)被保留,以使从文档中提取中的用于与列表342相比较的表达不会跨越短语边界。在本发明的某些实施例中使用的短语边界的其他示例包括,但不局限于,诸如“.”、“?”、空行等的标点符号。
在本发明的某些实施例中,主列表342是从若干不同的源收集来的项的很大集合。因此,在步骤504中,可以执行另外的过滤以确保只有提供信息的候选项被选择用于包括在候选项集合中。在某些实施例中,与主列表342中的项相比较的文档中的项在比较之前被处理。例如,在某些实施例中,在与列表342相比较之前去除项中的标点符号。在某些实施例中,在与列表342相比较之前用空格代替标点符号字符。在某些实施例中,噪声项的列表354被存储在存储器314中。代表性的噪声项包括,但不局限于,诸如“a”、“the”、“who”、“what”和“where”之类的单词。因此,在噪声项的列表354被存储在存储器314的实施例中,比较步骤504将首先判断将与主列表342相比较的项是否处于噪声项列表354中。如果是,则忽略该项,并且不与列表342相比较。在某些实施例中,只有那些至少包含某个最小阈值数目个字符的项才在步骤504中被比较。例如,在某些实施例中,只有那些至少包含4个字符的项在步骤504中被比较。
无论判断506的结果如何,都执行判断508,该判断关于构建器346是否应该使文档中的任意其他项与主列表342相比较。很多可以被用于确定判断508的结果的不同条件已被公开(例如项截断的最大数目、唯一的项截断的最大数目、已经存在于集合410中的候选项的最大数目等等)。
在图5的流程图中随后是多个可选步骤。在可选步骤512中,冗余项在与文档相关联的候选项集合中被折叠。在可选步骤514中,索引352中的文档被分类(例如分类为第一和第二类)。
存在多种可以影响分类步骤514的不同方法,所有这些方法都被包括在本发明的范围内。例如,在某些实施例中,每个文档402被分类为第一或第二类。在优选实施例中,第一类是家庭友好类,而第二类是非家庭友好类。当文档402包括色情、攻击性或暴力语言时,它将被分到第二类。否则,它将被分到第一类。在某些实施例中,分类器模块350(图3)被用于执行这样的分类。通常,分类器模块350通过判断文档是否想要包括色情、攻击性或暴力内容而起作用。如果是这样,文档则被指定为非家庭友好的。该指定被存储在特征值408(图4)中,该特征值408与关联于被分类集合410的文档相对应。
在该阶段,在候选项的集合中通常有大量候选项。例如,在有1000个候选项能够被添加到候选项的集合中的实施例中,候选项的集合在该阶段包括1000个项。无论每个候选项集合中的候选项的数目有多少,他们都尚未被分级。因此,在步骤516中,候选项被分级,然后经分级的候选项中的N个最高的候选项被允许保留在候选集合中,而所有其他候选项都被删除,以便在分级的集合中只保留N(例如20)个最有代表性的项(516)。因此,步骤516的最终效果是从候选项的集合中产生经分级的候选项的集合。此外,在步骤516中,只有项级的项(例如顶部的20个)被允许保留在经分级的候选项的集合中。
分级功能所使用的标准和参数可以包括下列参数中的一个或多个:每个项在文档中出现的次数、该项是否出现在文档中预定的前一部分、该项在文档中的第一位置,以及该项中的字符数目。基于这些参数,为每个候选项分配一个级别,然后只有具有最高级别的N个项被保留在经分级的候选项的集合中。其他项被从集合中删除。当处理速度极其重要时,限定与每个文档相关联的候选项的数目有助于防止文档索引过分增大,并且减少了查询时需要考虑的项的数量。用于一个文档的经分级候选项的集合可以通过在文档的索引条目(参见410,图4)中存储代表候选项的一组字符串(可选地被压缩)或索引而与该文档相关联,其中每个索引值指向候选项342的主列表中的项。相关值可以与关联于文档的每个候选项(或者指向候选项的指针)一道被存储在用于文档的文档索引352的条目中,例如在分级过程中使用的项得分和/或该项在文档中的第一位置。但是,在优选实施例中,这些附加值不被存储在文档索引352中。
使经分级的候选项的集合410与文档索引352中的文档相关联的过程已被描述。现在将关注转到图6,该图描述了根据本发明的一个实施例,这样的集合410被用于构建用于呈现的候选项的子集的方式。在步骤602中,查询处理器320接收到查询。在步骤604中,该查询被处理,从而从文档索引352获取经分级文档的初始组。将会意识到,在某些实施例中,经分级文档的初始组可以只包含文档的索引,而无需包含文档本身。但是,该索引将包括用于文档的初始集合中的每个文档的统一资源定位符(URL)。因此,每个文档可以从因特网(或某种其他形式的网络)获取,如果随后被用户所请求的话。在某些实施例中,文档的初始集合作为搜索结果340被存储在服务器300(图3)的存储器314中。再次参考图6,使用搜索结果340来创建(606)被建议的查询细化的列表(候选项的子集)。
创建建议查询细化列表(候选项的子集)的方法将依赖于该查询是否是家庭友好搜索。在可选步骤608中,对于搜索结果340(经分级文档的初始组)中的每个顶级文档(例如前50个文档),确定该文档的类别。当搜索结果340中阈值百分比的顶级文档属于第一类(家庭友好类)时,与一个顶级文档相关联的不属于第一类的候选项的所有集合410都不被用于图6中的任何后续步骤。在某些实施例中,除家庭友好类之外的类别在标引(图5)期间被用于分类文档。在这样的实施例中,这些类别可以在步骤608中被用于判断经分级的候选项的哪些集合将被用于构建候选项的子集。在示例性实施例中,只有M个顶级文档(例如来自搜索结果340的10个顶级文档)的类别被用于执行步骤608中的判断。例如,如果10个顶级文档中的至少8个被分类为家庭友好的,则来自非家庭友好文档的候选项被排除在被用于构建建议查询细化的列表的经分级候选项的集合之外。
在步骤610中,选择处于与搜索结果340中的文档相关联的经分级候选项的各个集合中的一个或多个集合中的候选项的一个子集。在一个实施例中,该选择功能包括对与经分级文档(搜索结果340)的初始组中的顶级文档相关联的经分级候选项410的每个集合中的每个候选项应用加权功能。经分级文档的初始组中的每个顶级文档都具有一个级别,该级别在数字上小于阈值级别。在某些实施例中,顶级文档是T个顶级文档,其中T是一个预定数字,例如50(并且优选地,在5到200的范围内,最优选地,在20到100的范围内)。在步骤610中只考虑顶级文档,以便使相关的项被收集到将呈现给用户的候选项的子集中的机会最大化。在各种实施例中,只考虑顶级的5、10、15、20、50或100个文档。接收到最高权重的这些候选项被包括在候选项的子集中。在某些实施例中,候选项的子集中的项数被限制为小于25的数字。
在某些实施例中,当在搜索结果340的初始组中存在少于截断数目的文档时,不建立候选项的子集并且没有候选项的子集被呈现给用户。例如,在一个实施例中,如果在搜索结果340的初始组中存在少于35个文档,则不建立候选项的子集。
本发明提供了多种不同的加权功能,用于评价与搜索结果340中的顶级文档相关联的每个集合410中的候选项。这些不同的加权功能被用于引擎322(图3)的选择功能342的各种实施例。
在某些实施例中,被功能324(加权功能)应用到一个候选项的权重是根据既(i)包括该候选项,又(ii)分别与一个顶级文档相关联的经分级候选项的集合数目来确定的。例如,考虑存在50个顶级文档并且候选项“Space Shuttle”出现在分别与一个顶级文档相关联的经分级候选项的三个集合中的情况。在此情况下,将权重3应用于该候选项“SpaceShuttle”。
在某些实施例中,由选择功能326应用到一个候选项的权重是根据既(i)包括该候选项,又(ii)分别与一个顶级文档相关联的那些经分级候选项的集合中的该候选项的函数(例如平均)来确定的。某些实施例既考虑包括该项的集合,也考虑不包括该项的集合。不包括该项的集合被分配一个用于平均的数字值,该数字值指示该集合中不包括该项。这种加权因子利用了如下事实:经分级候选项的每个集合实际上都是经分级的顺序列表。因此,如果候选项“Space Shuttle”出现在分别关联于一个顶级文档的多个候选项集合中的经分级列表的顶部,则它将在此加权方案中接收到相对较高的权重。相反,如果项“Space Shuttle”处于其出现的每个经分级候选项的集合中的最后一些项中,则它将在此加权方案中接收到相对较低的权重。
在某些实施例中,由功能324应用到一个候选项的权重是根据接收到的查询中的一项是否处于候选项中来确定的。例如,如果查询项是“Shuttle”而候选项是“Space Shuttle”,则该候选项被赋予一个满(full)权重,否则该候选项不被赋予权重。
在某些实施例中,由功能324(加权功能)应用到一个候选项的权重是根据候选项中的字符数目来确定的。例如,候选项“Space Shuttle”将接收到比候选项“Dogs”更多的权重。
在某些实施例中,由功能324应用到一个候选项的权重是根据与包括了该候选项的经分级候选项的集合相关联的那些顶级文档的级别的函数(例如平均)来确定的。这种加权方案采用了已由搜索引擎322应用到搜索结果的初始集合的级别。在这种加权方案中,来自集合410的与较高级别文档相关联的候选项被赋予比与较低级别文档相关联的候选项更高的优先权。例如,考虑候选项“Space Shuttle”出现在与经分级文档的初始组中的顶级文档中的文档2、4和6相关联的经分级候选项的各个集合中的情况。因此,在此加权方案中,该项“Space Shuttle”将接收到值4的函数的权重。现在,假设该项“Space Shuttle”出现在与经分级文档的初始组中的顶级文档中的文档10、20和30相关联的经分级候选项的各个集合中。因此,在此加权方案中,该项“Space Shuttle”将接收到值20的函数的权重。在此加权方案下,值4将产生比利用值20所产生的权重更好的权重(将对该候选项向上加权)。在某些实施例中,此加权功能会考虑不包括该候选项的集合。它们被分配一个用于平均的数字值。
在某些实施例中,首先出现的单词作为候选项的文档的级别被用于加权功能。
被选择功能326的各种实施例所使用的特定加权因子已被概括,以便介绍这些因子。但是,在优选实施例中,若干这种因子被组合,以便产生所需结果。下面是选择功能326的某些优选实施例。
在某些实施例中,由功能324应用到一个候选项的权重是根据TermCount、TermPosition、ResultPosition、TermLength和QueryInclusion的任意组合(或任意加权组合)来确定的,其中:
TermCount是既(i)包括该候选项,又(ii)分别与一个顶级文档相关联的经分级候选项的集合数目,
TermPosition是该候选项在既(i)包括该候选项,又(ii)分别与一个顶级文档相关联的经分级候选项的那些集合中的位置的函数(例如平均),
ResultPosition是与包括该候选项的经分级候选项集合相关联的那些顶级文档的级别的函数(例如平均),
TermLength是该候选项重的字符数目(候选项的复杂性),以及
QueryInclusion是指示接收到的查询中的项是否处于候选项中的值。
如这里所使用的,应用QueryInclusion(例如当QueryInclusion是非零值,例如1时)意味着,当接收到的查询中的一项处于该候选项中时,该候选项被向上加权。此外,不应用QueryInclusion(例如当QueryInclusion被设置为等于0时)意味着,当接收到的查询中的项未处于该候选项中时,该候选项不被向上加权。在某些实施例中,不认为噪声项(例如a、the、who、what、where等等)属于候选项。因此,如果查询包括噪声单词“for”而候选项也包括单词“for”,则不信任该候选项,并且QueryInclusion不被向上加权。
在某些实施例中,由功能324应用到一个候选项的权重根据以下公式来确定:
TermCount+TermPosition+ResultPosition+TermLength+QueryInclusion。其中权重、TermCount、TermPosition、ResultPosition、TermLength和QueryInclusion如上所定义。在某些实施例中,TermCount、TermPosition、ResultPosition、TermLength和QueryInclusion中的每一个被独立加权。
在某些实施例中,由功能324应用到一个候选项的权重根据以下公式来确定:
(TermCount*w1)+
(TermPosition*(w2+(RefinementDepth*w2′)))+
(ResultPosition*w3)+
(TermLength*(w4+(RefinementDepth*w4′)))+
(QueryInclusion*(w5+(RefinementDepth*w5′)))
其中w1、w2、w3、w4、w5、w2′、w4′和w5′是独立的权重。此外,RefinementDepth是对接收到的查询执行的处理的次数。换句话说,RefinementDepth是可选步骤614的执行操作已重复步骤602到步骤612的次数,在所述步骤614中,用户将来自候选项的子集的一项添加到初始搜索查询。在一个实施例中,
w1=100
w2=15
w2′=15
w3=1
w4=1
w4′=0
w5=100,并且
w5′=50。
在本发明的某些实施例中,选择功能610将删除经分级候选项的集合中的某些候选项。例如,在某些实施例中,经分级候选项的集合中的仅有某个前缀或后缀不同的候选项被折叠在一起。例如,在某些实施例中,前缀的列表和后缀的列表被存储在存储器314中。如果两个候选项之间的差异仅在于其中一个候选项包括了一个单词,该单词相对于另一候选项中的相应单词的差别在于单词始端的前缀或单词末端的后缀,则这两个候选项可以被折叠在一起。在某些实施例中,存在三类前缀(以及三种相似类别的后缀)。如果候选项包括一个属于第一类的前缀,则丢弃该单词。如果候选项包括一个属于第二类的前缀,则删除该前缀。如果候选项包括一个属于第三类的前缀,则执行评估。在此评估中,与一个顶级文档相关联的每个经分级候选项的集合都被搜索,以找到不包括该前缀的相同项的实例。如果没有找到这样的实例,则不剥去该前缀。如果找到这样的实例,则剥去该前缀。这种类型的前缀(和后缀)处理在很所情况下都非常有用。例如,考虑候选项是“the cars”的情况。通常,前缀“the”被看作应该被剥去的前缀。但是,该候选项有可能指的是著名的音乐组合,该音乐组合通常被称作“the cars”。因此,继而发生一次搜索,以判断在与顶级文档相关联的经分级候选项的其他集合中的任意集合中是否找到不带有前缀“the”的项“cars”。如果未出现这样的实例,则该前缀不被剥去。在此实例中,注意,这里所使用的前缀可以是在前的词缀(例如un-、non-等等),或者是在前的单词或短语(例如the、of、to go等等)。
在步骤612中,候选项的子集被呈现给用户。在步骤614中,用户可选地选择候选项的子集中的一项136(图2),并且以经修订的查询来重复处理(步骤604)、选择(步骤606)和呈现(步骤612),其中所述经修订的查询包括初始(接收到的)查询和从显示在面板140(图2)上的候选项的子集中选出的候选项136。如上所述,在某些实施例中,用户可以选择一项136以将其添加到之前提交的查询中,以用于取代之前提交的查询,或与之前提交的查询一起被用作排除项。
这里引用的所有参考都通过参考而并入了其全部内容以在某种程度上用于所有目的,就好像每个单独的公开或专利或专利申请都被具体地和单独地指示为通过参考而并入了其全部内容以用于所有目的。
本发明可以被实现为包含嵌入在计算机可读存储介质中的计算机程序机制的计算机程序产品。例如,该计算机程序产品可以包含图3所示的程序模块。这些程序模块可以被存储在CD-ROM、磁盘存储产品,或任意其他的计算机可读数据或程序存储产品上。计算机程序产品中的软件模块还可以经由因特网或以其他方式通过在载波上传输计算机数据信号(其中嵌入了软件模块)而被电子地分布。
对本领域技术人员显而易见,在不脱离本发明的精神和范围的情况下,可以对本发明进行各种修改和变化。这里描述的具体实施例仅仅是以示例方式被提供的。这些实施例被选择和描述,以便最好地说明本发明的原理及其实际应用,从而使本领域技术人员能够针对所想到的特定用途来最好地修改本发明和各种实施例。本发明仅仅由所附权利要求书的项目以及权利要求书所授权的等同物的全部范围来限定。