查询处理的制作方法

专利2022-06-29  76




背景技术:

本发明涉及查询处理。

搜索查询通常包括大量条件。条件的类型可以包括合取条件(例如,"猫and狗")和析取条件(例如,"苹果or橙子")。用于处理搜索查询的常规技术通常针对一种类型的查询条件来优化。例如,可以有效地处理合取条件的数据结构在处理析取条件时不是有效的。此外,由于它们的性质,有效处理析取条件的数据结构不能以准确的方式处理合取条件。由于查询条件可以计数到数百、数千或更多,因此传统技术不能有效地处理包括两种类型的条件的查询。



技术实现要素:

本发明的实施例涉及查询处理,并且更具体地,涉及用于相似性搜索的查询的析取条件和合取条件的混合处理。

根据本发明的一个实施例,一种方法包括:接收指定and条件和or条件的查询;基于and索引结构,确定语料库中的多个文档中的满足查询的and条件的文档集合;计算文档集合中的第一文档的查询相似性得分,其中查询相似性得分基于针对查询的or条件计算的第一散列值、or条件的权重值以及or索引中指定的第一文档的第二散列值;以及返回第一文档的指示和查询相似性得分作为对查询的响应。

在另一实施例中,一种系统包括处理器和包含程序的存储器,程序在由处理器执行时执行操作,该操作包括:接收指定and条件和or条件的查询;基于and索引结构,确定语料库中的多个文档中的满足查询的and条件的文档集合;计算文档集合中的第一文档的查询相似性得分,其中查询相似性得分基于针对查询的or条件计算的第一散列值、or条件的权重值、以及or索引中指定的第一文档的第二散列值;以及返回第一文档的指示和查询相似性得分,作为对查询的响应。

在另一实施例中,一种非暂时性计算机可读介质存储指令,当由处理器执行时,所述指令执行操作,所述操作包括:接收指定and条件和or条件的查询,基于and索引结构,确定语料库中的多个文档中的满足查询的and条件的文档集合;计算文档集合中的第一文档的查询相似性得分,其中查询相似性得分基于针对查询的or条件计算的第一散列值、or条件的权重值、以及or索引中指定的第一文档的第二散列值,以及返回第一文档的指示和查询相似性得分,作为对查询的响应。

附图说明

现在将参考附图仅通过示例的方式描述本发明的实施例,在附图中:

图1示出了根据一个实施例的实现用于相似性搜索的搜索查询的析取条件和合取条件的混合处理的查询处理系统。

图2是示出根据一个实施例的用于相似性搜索的搜索查询的析取条件和合取条件的混合处理的方法的流程图。

图3是示出根据一个实施例的用于文档预处理的方法的流程图。

图4是示出根据一个实施例的使用析取条件和合取条件的混合处理来处理查询的方法的流程图。

图5是示出根据一个实施例的生成满足查询中的每个and条件的每个文档的文档列表的方法的流程图。

图6是示出根据一个实施例的计算文档相对于查询中的所有or条件的相似性得分的方法的流程图。

图7示出了根据一个实施例的实现用于相似性搜索的搜索查询的析取条件和合取条件的混合处理的系统。

具体实施方式

本文公开的实施例提供了用于有效地处理查询中的合取条件(也称为"and条件")和析取条件(也称为"or条件")的技术。通常,第一种类型的索引结构用于处理接收的查询的and条件,而散列技术被单独地用于处理查询的or条件。然后,可以合并处理and条件和or条件的结果,以计算最终的搜索结果集。最终搜索结果集包括完全满足指定查询中的每个"and"条件的结果,并且结果集中的结果按照给定结果满足查询的"or"条件的程度来排序。

图1示出了根据一个实施例的实现用于相似性搜索的搜索查询的析取条件和合取条件的混合处理的查询处理系统100。如图所示,查询处理系统100接收查询101。查询101可以从任何类型的接口接收,诸如命令行接口、图形用户接口、应用接口等。通常,查询101以存储在语料库120中的文档的集合为目标。存储在语料库120中的文档可以包括元数据属性,诸如:"作者"、"地点"、"出版日期:"、"主题"等,以及每个元数据属性的对应值。存储在语料库120中的文档可由唯一文档标识符(id)来标识。查询101可以指定搜索语料库120中与某些元数据属性(也称为"特征")匹配的文档。例如,查询101可以指定返回具有"socratesandaristotle"的作者、"希腊or雅典"的地点以及"哲学or试验"的主题的文档。查询101的语法可以是目前已知或未知的任何语法。

为了处理查询101,查询处理系统100将查询101解析成一组or条件102和一组and条件103。or条件102对应于查询中的任何析取的"or"条件,诸如以上示例查询中的"希腊or雅典"。and条件103对应于查询中的任何合取的"and"条件,诸如上述示例查询中的"socratesandaristotle"。为了处理and条件103,查询生成器105生成搜索查询(或多个查询)107。搜索查询107代表包括查询101中指定的每个and条件103的一个或多个搜索查询。搜索查询107在合取搜索108中被处理,该合取搜索利用and索引109。and索引109是在语料库120中的文档的预处理阶段期间生成的,并且是用于有效地返回语料库120中的满足and条件103的文档的索引结构。在一个实施例中,and索引109是倒排列表(postinglist)集。通常,and索引109存储多个元数据属性中的每一个的指示(例如,"作者:socrates"),以及语料库120中的包括匹配元数据属性的每个文档的指示(例如,文档id)。例如,在预处理阶段期间,查询处理系统100可以确定具有示例id为"1"、"200"和"1337"的文档包括指定文档作者是socrates的元数据属性。因此,and索引109将包括"author:socrates"和文档id"1"、"200"和"1337"。在至少一个实施例中,and索引109中的条目按照给定元数据属性的文档id的升序来排序。

因此,and索引109的合取搜索108的结果返回语料库120中的满足查询101中的每个and条件103的文档的列表110(或集合)。例如,列表110可将文档id"1"和"1337"指定为具有作者值"socrates"和"aristotle"的文档(假定文档id"1"和"1337"与and索引109中的"aristotle"相关联)。

为了处理or条件102,查询处理系统100利用散列生成器104来计算一个或多个散列值106。散列生成器104代表任何局部敏感散列(locality-sensitivehashing,lsh)函数,其将属性(或特征)集作为输入,并基于该输入计算散列值。通常,散列生成器104被配置为生成散列值,使得相似的输入(例如,相似的属性集)映射到相同的(或邻近的)散列值。这样做允许基于所计算的散列值来比较来自语料库120的两个或更多个文档。通常,散列生成器104为查询101中的每个or条件102计算相应散列值"h(x)"(其中"x"是or条件)106,并且基于查询101中的每个or条件102计算散列值"h(o)"(其中"o"是查询101中的所有or条件的集合)106。因此,继续先前的示例查询101,散列生成器104将计算"希腊"的第一散列值106、"雅典"的第二散列值106、"哲学"的第三散列值106、"试验"的第四散列值106、以及"希腊雅典哲学试验"的第五散列值106(注意,当计算第五散列值时,可以包括或不包括空格(space);相似地,可以包括或不包括其他分隔符来分隔每个or条件的字)。

在框113,查询处理系统100为文档列表110(例如,满足查询101的每个and条件103的文档集合)中的每个文档计算一个或多个得分。为此,查询处理系统100利用or索引112,or索引112也是在语料库120的预处理阶段期间生成的。通常,or索引112是由散列生成器104为语料库120中的每个文档计算的散列值"h(d)"的数组(其中"d"是文档)(例如,语料库120中的每个文档的特征集是散列生成器104的输入)。or索引112还包括语料库120中的每个文档的相应文档id,其与由散列生成器104生成的相应散列值h(d)相关联。在至少一个实施例中,or索引112以文档id的升序来排序。

查询处理系统101然后对存储在or索引112中的每个文档执行循环。通常,在循环的给定迭代中,如果当前文档id未被包括在文档列表110中,则查询处理系统跳过当前文档,因为文档不满足查询的每个and条件103。否则,查询处理系统100初始化查询相对于当前文档的查询相似性得分"s(q,d)"(例如,将得分s(q,d)设置为零,其中"q"是查询101,并且"d"是当前文档)。查询处理系统100然后计算当前文档与查询101的or条件102之间的总or相似性得分"s(o,d)"(其中"o"是所有or条件102,并且"d"是当前文档)。通常,查询处理系统基于当前文档的散列值(例如,从or索引112检索的h(d))和针对查询101中的所有组合的or条件计算的散列值106(例如,h(o),来自以上示例的第五散列值106),计算总or相似性得分s(o,d)。在至少一个实施例中,查询处理系统100使用散列值h(o)、h(d)的jaccard相似性系数来计算总or相似性得分s(o,d)。查询处理系统100然后将当前文档的总or相似性得分s(o,d)设置为查询相对于当前文档的查询相似性得分s(q,d)。查询处理系统100然后对查询101中的每个or条件102执行循环。通常,对于每个or条件102,查询处理系统100计算反映文档与当前or条件的相似性的得分s(d,x)(其中"d"是当前文档,并且"x"是当前or条件)。在至少一个实施例中,使用应用于当前文档的散列值h(d)(从or索引112检索)和针对当前or条件计算的散列值106h(x)的jaccard相似性系数来计算得分s(d,x)。如果得分s(d,x)大于预定义阈值(例如,0),则有可能当前文档的文本满足当前or条件(例如,包括当前特征,诸如作者、地点等),并且查询处理系统100将当前or条件的权重值w(x)(其中"x"是or条件)相加到查询相似性得分s(q,d),例如,s(q,d)=s(q,d) w(x)。权重值被存储在特征权重121中。通常,特征权重121存储多个不同特征(也称为元数据属性和/或条件)中的每一个的浮点数值,该特征诸如作者、地点、标题等。一旦已经处理了每个or条件,就返回查询相似性得分s(q,d),作为当前文档的相似性得分,反映当前文档与搜索查询101相似的程度。在至少一个实施例中,查询处理系统100返回查询相似性得分s(q,d)以及文档的指示的作为响应于查询101的搜索结果114。在一些实施例中,查询处理系统100维护最高查询相似性得分s(q,d)和对应文档的列表,并且返回该列表作为响应于查询101的搜索结果114。列表的大小可以是任何预定义大小(例如,10、20、100等)。

图2是示出根据一个实施例的用于相似性搜索的搜索查询的析取条件和合取条件的混合处理的方法200的流程图。如图所示,方法200开始于框210,参考图3更详细地描述,其中查询处理系统100在语料库120的文档的预处理阶段期间生成and索引109和or索引112。另外,预处理阶段还可以包括更新特征权重121中的权重。在框220,查询处理系统100接收指定从语料库120返回具有至少一个合取条件和至少一个合取条件的文档的查询。例如,查询可以指定合取条件"作者:aliceand地点:东京",指示来自语料库120的任何匹配文档必须由示例作者"alice"创作,并具有匹配城市东京的地点属性(例如,出版城市、设置、作者位置等)。查询还可以指定合取条件,诸如"主题:橙子or主题:苹果",指定从语料库120返回包括橙子或苹果作为主题(或一般提及术语"橙子"或"苹果")的文档。

在框230,查询处理系统100使用以上参考图1描述的混合方法处理查询。通常,在框230,查询处理系统100使用and索引109处理and条件,以从语料库120返回满足查询中的每个and条件的文档的列表110(或集合)。并行地,查询处理系统100通过计算查询中的每个or条件的散列值以及查询中的组合的or条件的散列值来处理or条件。查询处理系统100然后为or索引112中的、也在满足每个and条件的文档的列表110中的每个文档计算查询相似性得分。基于文档相对于查询中指定的每个or条件的相似性来对每个文档的查询相似性得分进行加权,其中权重在特征权重121中定义。在框240,查询处理系统100从语料库120返回文档集合作为对查询的响应。例如,查询处理系统100可以生成包括文档集合和对应查询相似性得分的图形用户界面(gui)。在至少一个实施例中,gui包括来自语料库120的具有最高查询相似性得分的预定义数量的文档。

图3是示出根据一个实施例的对应于框210的、用于文档预处理的方法300的流程图。如图所示,方法300开始于框310,其中查询处理系统100接收包括多个文档的语料库120。语料库120中的每个文档可以包括描述该文档的多个特征或属性。例如,特征可以包括但不限于文档的作者、出版日期、出版城市、主题、关键词等。在框315,查询处理系统100接收特征权重121,并且可选地计算特征权重121中的每个特征的更新特征权重值。在至少一个实施例中,使用机器学习算法来更新特征权重121中的更新特征权重值。通常,特征权重121中的权重反映基于语料库120中的文档中的每个特征的相对重要性和/或频率而应用于不同特征(例如,作者、城市、日期等)的权重。例如,如果机器学习确定作者姓名是计算查询相似性得分时最重要的特征,则作者姓名的特征权重121可以具有相对于特征权重121中的其他特征的最大权重。

在框320,查询处理系统100对语料库120中的每个文档执行包括框325-355的循环。在框325,查询处理系统100确定当前文档的特征。查询处理系统100可以基于与当前文档相关联的元数据来确定特征。另外,查询处理系统100可以对文档的文本应用自然语言处理,从文档提取额外特征(或属性)。在框330,查询处理系统100对在框325标识的当前文档的每个特征执行包括框335-340的循环。在框335,查询处理系统100在and索引109中存储反映当前文档包括当前特征的指示。通常,and索引109包括当前特征的指示,以及包括相应特征的文档id的列表。and索引109中的文档id的列表可以以文档id的升序来排序。在框340,查询处理系统100确定当前文档中是否还剩余更多特征。如果剩余更多特征,则查询处理系统100返回到框330,否则,查询处理系统100进行到框345。

在框345,查询处理系统100调用散列生成器104来计算当前文档的散列值106(也称为"h(d)")。如前所述,散列生成器104将局部敏感散列函数应用于文档的特征集合来计算文档的散列值106。在框350,查询处理系统100将计算的散列值106连同当前文档id一起存储在or索引112中。在至少一个实施例中,查询处理系统100以文档id的升序对or索引112排序。在框355,查询处理系统100确定在语料库120中是否剩余更多文档。如果剩余更多文档,查询处理系统100返回到框320,以预处理剩余文档。否则,方法300结束。

图4是示出根据一个实施例的对应于框230的、使用析取条件和合取条件的混合处理来处理查询的方法400的流程图。如图所示,方法400开始于框410,参考图5更详细地描述,其中查询处理系统100生成满足查询中的每个and条件的每个文档的文档列表110。通常,查询处理系统100利用and索引109来确定语料库120中的哪些文档满足查询中的每个and条件。如果文档id与and索引109中的给定特征相关联,则查询处理系统100确定满足相应and条件。在框420,查询处理系统100调用散列生成器104来为查询中的每个or条件计算散列值"h(x)",其中"x"是给定的or条件(例如,"地点:日本")。散列生成器104还为查询中的所有or条件计算散列值"h(o)",例如("地点:日本标题:橙关键词:水果")的散列。

在框430,查询处理系统100对or索引112中的每个文档执行包括框440-460的循环。在框440,查询处理系统100确定当前文档的文档id是否被包括在满足在框410处生成的每个and条件的文档的文档列表110中。如果当前文档不在文档列表110中,则该文档不满足查询的每个and条件,并且查询处理系统100前进到框460(例如,丢弃当前文档作为可能的搜索结果)。否则,查询处理系统100前进到框450,其中查询处理系统100计算当前文档的查询相似性得分s(q,d),其反映当前文档满足查询的or条件的程度。

在框460,查询处理系统100确定or索引112中是否剩余更多文档。如果剩余更多文档,则查询处理系统100返回到框430。否则,查询处理系统100进行到框470,其中查询处理系统100可选地基于在框450处计算的查询相似性得分对搜索结果进行排序。由于在框450处仅计算满足每个and条件的那些文档的查询相似性得分,所以这样做基于每个文档满足查询中的每个or条件的程度来对结果进行排序。在框480,查询处理系统100返回搜索结果作为对查询的响应。如前所述,查询处理系统100可以可选地将返回的搜索结果的数量限制为预定义数量的结果,其中仅返回最高排名的结果(基于查询相似性得分)。

图5是示出根据一个实施例的对应于框410的、生成满足查询中的每个and条件的每个文档的文档列表的方法500的流程图。如图所示,方法500开始于框510,其中查询处理系统100生成包括查询中指定的每个and条件的查询。例如,如果查询包括"作者:史密斯and城市:纽约and关键词:出租车"的指示,查询处理系统100将生成指定从and索引109返回具有作者名字为"smith"、出版城市为"纽约"和关键词为"出租车"的文档id的查询。在框520,查询处理系统100针对and索引109处理在框520处生成的查询。在框530,从and索引109返回包括满足在框510处生成的查询中的每个and条件的每个文档id的文档的列表110。

图6是示出根据一个实施例的对应于框450的、用于计算文档相对于查询中的所有or条件的查询相似性得分的方法600的流程图。如图所示,方法600开始于框610,其中查询处理系统100将当前文档的查询相似性得分s(q,d)设置为等于零。在框620,查询处理系统100计算文档相对于查询的所有or条件的总or相似性得分s(o,d)。在一个实施例中,基于jaccard相似性得分来计算总or相似性得分s(o,d),其中jaccard相似性得分基于在框420处计算的散列值h(o)(针对查询中的所有or条件)以及基于文档的文档id从or索引112检索的文档的散列值h(d)。在框630,查询处理系统100将该文档的查询相似性得分s(q,d)设置为等于在框620处计算的总or相似性得分s(o,d),例如,s(q,d)=s(o,d)。

在框640,查询处理系统100对查询中的每个or条件执行包括框650-680的循环。在框650,查询处理系统100计算文档相对于当前or条件的or相似性得分s(d,x)。在至少一个实施例中,基于从or索引112检索的文档的散列值h(d)和在框420处计算的当前or条件的散列值106h(x)的jaccard系数来计算s(d,x)。在框660,查询处理系统100确定在框650处计算的得分s(d,x)是否大于零。如果得分s(d,x)小于或等于零,则查询处理系统100进行到框680,避免基于当前特征向查询相似性得分s(q,d)来相加任何权重,因为得分s(d,x)指示文档不满足当前or条件(例如,由or条件指定的当前特征不存在于查询中)。然而,如果得分s(d,x)大于零,则文档可能满足当前or条件(例如,继续前面的示例,具有作者名"smith"或位置"纽约"),并且查询处理系统100前进到框670。

在框670处,查询处理系统100通过相加来自当前or条件的特征权重121的权重值来更新查询相似性得分s(q,d),使得s(q,d)=s(q,d) w(x),其中w(x)是特征权重中的当前or条件的特征权重。例如,如果当前条件涉及文档的作者,则w(x)将是与特征权重121中的"作者"相关联的特征权重。在框680,查询处理系统100确定在查询中是否还剩余更多or条件。如果是,则查询处理系统100返回到框640。否则,查询处理系统100前进到框690,其中返回文档的查询相似性得分s(q,d)。这样做返回考虑文档满足每个or条件以及所有or条件组合的程度的得分。如果文档满足给定的or条件,则来自特征权重121的对应权重w(x)被相加到文档的查询相似性得分s(q,d)。相似地,因为在框620处考虑or相似性得分s(o,d),所以文档满足查询的所有or条件的程度被反映在查询相似性得分s(q,d)中。

图7是示出根据一个实施例的实现用于相似性搜索的搜索查询的析取条件和合取条件的混合处理的查询处理系统100的框图。联网系统100包括计算系统702。计算系统702还可以经由网络730连接到其他计算机。通常,网络730可以是电信网络和/或广域网(wan)。在特定实施例中,网络730是因特网。

计算系统702通常包括处理器704,其经由总线720从存储器706和/或存储装置708获得指令和数据。计算系统702还可以包括连接到总线720的一个或多个网络接口设备718、输入设备722和输出设备724。计算系统702通常在操作系统(未示出)的控制下。操作系统的示例包括unix操作系统、microsoftwindows操作系统的版本、以及linux操作系统的发布。(unix是theopengroup在美国和其他国家的注册商标。microsoft和windows是微软公司在美国、其他国家或两者的商标。linux是美国、其他国家或两者的linustorvalds的注册商标)。更一般地,可以使用支持本文公开的功能的任何操作系统。处理器704是执行指令、逻辑和数学处理的可编程逻辑设备,并且可以代表一个或多个cpu。网络接口设备718可以是允许计算系统702经由网络730与其他计算机通信的任何类型的网络通信设备。

存储装置708代表硬盘驱动器、固态驱动器、闪存设备、光学介质等。通常,存储装置708存储由计算系统702使用的应用程序和数据。另外,存储器706和存储装置708可以被认为包括物理上位于其他地方的存储器;例如在经由总线720耦合到计算系统702的另一计算机上。

输入设备722可以是用于向计算系统702提供输入的任何设备。例如,可以使用键盘和/或鼠标。输入设备722代表各种各样的输入设备,包括键盘、鼠标、控制器等等。此外,输入设备722可以包括用于控制计算系统702的一组按钮、开关或其他物理设备机构。输出设备724可以包括诸如监视器、触摸屏显示器等的输出设备。

如图所示,存储器706包含查询处理器712,查询处理器712是通常被配置为使用本文参考图1-图6中的查询处理系统100描述的混合方法来处理从客户端计算系统760的查询接口760接收的查询的应用。存储器还包含散列生成器194、and索引109和or索引112,以上均对其进行了更详细的描述。如图所示,存储装置708包含语料库120和特征权重121,以上均对其进行了更详细的描述。通常,查询处理器712和计算系统702被配置为实现以上参考图1-图6描述的所有功能。

有利地,本文公开的实施例提供了用于有效地处理包含合取条件和析取条件的查询的技术的有效集成。如上所述,本文公开的实施例利用为每个文档计算的散列值来确定对应特征是否存在于该文档中,从而极大地减少了存储每个文档的所有特征所需的存储器的量。相似地,即使查询可能包括大量and条件,通过避免计算不满足每个and条件的那些文档的or条件的相似性得分,也节省了处理资源。

已经出于说明的目的给出了本发明的各种实施例的描述,但是其不旨在是穷尽的或限于所公开的实施例。在不背离所描述的实施例的范围的情况下,许多修改和变化对于本领域的普通技术人员将是显而易见的。选择本文所使用的术语以最好地解释实施例的原理、实际应用或对市场上存在的技术改进,或使本领域的其他普通技术人员能够理解本文所公开的实施例。

在前文中,参考了本公开中呈现的实施例。然而,本公开的范围不限于具体描述的实施例。相反,所记载的特征和要素的任何组合,无论是否涉及不同的实施例,都被设想是实现和实践所设想的实施例。此外,尽管本文公开的实施例可以实现优于其他可能的解决方案或优于现有技术的优点,但是给定实施例是否实现特定优点不限制本公开的范围。因此,所记载的方面、特征、实施例和优点仅仅是说明性的,并且不被认为是所附权利要求的要素或限制,除非在(多个)权利要求中明确记载。同样,对"本发明"的引用不应被解释为对本文公开的任何发明主题的概括,并且不应被认为是所附权利要求的要素或限制,除非在(多个)权利要求中明确记载。

本发明的各方面可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或组合软件和硬件方面的实施例的形式,它们在本文中可以统称为"电路"、"模块"或"系统"。

本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。

计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c 等,以及常规的过程式编程语言—诸如"c"语言或相似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。

这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个框以及流程图和/或框图中各个框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个框中规定的功能/动作。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个框、以及框图和/或流程图中的框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现.

本发明的实施例可以通过云计算基础设施提供给终端用户。云计算通常是指通过网络提供可缩放的计算资源作为服务。更正式地,云计算可以被定义为提供计算资源与其底层技术架构(例如,服务器、存储装置、网络)之间的抽象的计算能力,从而实现对以最小的管理努力或服务提供商交互被快速供应和释放的可配置计算资源的共享池的方便、按需网络访问。因此,云计算允许用户访问"云"中的虚拟计算资源(例如,存储装置、数据、应用,甚至完整的虚拟化计算系统),而不考虑用于提供计算资源的底层物理系统(或那些系统的位置)。

通常,云计算资源在按使用付费(pay-per-use)的基础上被提供给用户,其中用户仅针对实际使用的计算资源(例如,用户消耗的存储空间的量或用户实例化的虚拟化系统的数量)被收费。用户可以在任何时间并且通过因特网从任何地方访问驻留在云中的任何资源。在本发明的上下文中,用户可以访问云中可用的应用或相关数据。例如,查询处理器712可以在云中的计算系统上执行,并且使用如上所述的混合方法来处理查询。在这种情况下,查询处理器712可以生成and索引109和or索引112,并且将索引109、112存储在云中的存储位置处。这样做允许用户从附接到与云连接的网络(例如,因特网)的任何计算系统访问该信息。

虽然前述内容涉及本发明的实施例,但是在不偏离本发明的基本范围的情况下,可以设计本发明的其他和进一步的实施例,并且本发明的范围由所附权利要求确定。


技术特征:

1.一种方法,包括:

接收指定and条件和or条件的查询;

基于and索引结构,确定语料库中的多个文档中的满足所述查询的and条件的文档集合;

由处理器计算所述文档集合中的第一文档的查询相似性得分,其中,所述查询相似性得分基于针对所述查询的or条件计算的第一散列值、or条件的权重值以及or索引中指定的第一文档的第二散列值;以及

返回第一文档的指示和所述查询相似性得分,作为对所述查询的响应。

2.根据权利要求1所述的方法,其中,所述and索引包括倒排列表,所述倒排列表被配置为存储包括多个特征中的相应特征的每个文档的文档标识符(id),其中所述or索引包括所述多个文档中的每个文档的相应散列值,其中第一散列值、第二散列值和所述or索引中的多个散列值基于局部敏感散列函数来计算。

3.根据权利要求2所述的方法,其中,所述查询指定多个and条件,其中,所确定的文档集合满足所述多个and条件中的每个and条件,其中,确定所述文档集合包括:

生成搜索查询,所述搜索查询包括所述查询中指定的所述多个and条件中的每个and条件的指示;

针对所述and索引处理所述搜索查询;以及

从所述and索引接收所述文档集合,所述文档集合包括所述文档集合中的每个文档的文档id。

4.根据权利要求2所述的方法,其中,所述查询指定多个or条件,其中,计算所述查询相似性得分包括:

为(i)所述多个or条件中的每个or条件和(ii)所述多个or条件来计算相应散列值;

基于所述多个or条件的散列值和从所述or索引接收的第一文档的第二散列值,计算第一文档相对于所述多个or条件的总相似性得分;

基于从所述or索引接收的第一文档的第二散列值和相应or条件的散列值,计算第一文档相对于每个or条件的相应or相似性得分;

对于超过预定义阈值的每个相应or相似性得分,将与所述相应or条件相关联的权重相加到所述总相似性得分;以及

返回所述总相似性得分作为所述查询相似性得分。

5.根据权利要求1所述的方法,还包括在计算第一文档的相似性得分之前:

从所述or索引接收第一文档的文档标识符(id);以及

确定第一文档的文档id被包括在所述文档集合中。

6.根据权利要求5所述的方法,还包括:

从所述or索引接收所述语料库中的多个文档中的第二文档的文档标识符(id);

确定第二文档的文档id未被包括在所述文档集合中;

避免计算第二文档的查询相似性得分;以及

避免返回第二文档作为对所述查询的响应。

7.根据权利要求1所述的方法,其中,所述and索引和所述or索引是在所述语料库中的多个文档的预处理阶段期间生成的。

8.一种系统,包括:

处理器;以及

存储器,其包含程序,所述程序在由所述处理器执行时执行操作,所述操作包括:

接收指定and条件和or条件的查询;

基于and索引结构,确定语料库中的多个文档中的满足所述查询的and条件的文档集合;

计算所述文档集合中的第一文档的查询相似性得分,其中,所述查询相似性得分基于针对所述查询的or条件计算的第一散列值、or条件的权重值以及or索引中指定的第一文档的第二散列值;以及

返回第一文档的指示和所述查询相似性得分,作为对所述查询的响应。

9.根据权利要求8所述的系统,其中,所述and索引包括倒排列表,所述倒排列表被配置为存储包括多个特征中的相应特征的每个文档的文档标识符(id),其中所述or索引包括所述多个文档中的每个文档的相应散列值,其中第一散列值、第二散列值和所述or索引中的多个散列值基于局部敏感散列函数来计算。

10.根据权利要求9所述的系统,其中,所述查询指定多个and条件,其中,所确定的文档集合满足所述多个and条件中的每个and条件,其中,确定所述文档集合包括:

生成搜索查询,所述搜索查询包括所述查询中指定的所述多个and条件中的每个and条件的指示;

针对所述and索引处理所述搜索查询;以及

从所述and索引接收所述文档集合,所述文档集合包括所述文档集合中的每个文档的文档id。

11.根据权利要求9所述的系统,其中,所述查询指定多个or条件,其中,计算所述查询相似性得分包括:

为(i)所述多个or条件中的每个or条件和(ii)所述多个or条件来计算相应散列值;

基于所述多个or条件的散列值和从所述or索引接收的第一文档的第二散列值,计算第一文档相对于所述多个or条件的总相似性得分;

基于从所述or索引接收的第一文档的第二散列值和相应or条件的散列值,计算第一文档相对于每个or条件的相应or相似性得分;

对于超过预定义阈值的每个相应or相似性得分,将与所述相应or条件相关联的权重相加到所述总相似性得分;以及

返回所述总相似性得分作为所述查询相似性得分。

12.根据权利要求8所述的系统,所述操作还包括在计算第一文档的相似性得分之前:

从所述or索引接收第一文档的文档标识符(id);以及

确定第一文档的文档id被包括在所述文档集合中。

13.根据权利要求12所述的系统,所述操作还包括:

从所述or索引接收所述语料库中的多个文档中的第二文档的文档标识符(id);

确定第二文档的文档id未被包括在所述文档集合中;

避免计算第二文档的查询相似性得分;以及

避免返回第二文档作为对所述查询的响应。

14.根据权利要求8所述的系统,其中,所述and索引和所述or索引是在所述语料库中的多个文档的预处理阶段期间生成的。

15.一种计算机程序产品,包括:

非暂时性计算机可读存储介质,其体现有计算机可读程序代码,所述计算机可读程序代码可由处理器执行以执行操作,所述操作包括:

接收指定and条件和or条件的查询;

基于and索引结构,确定语料库中的多个文档中的满足所述查询的and条件的文档集合;

计算所述文档集合中的第一文档的查询相似性得分,其中,所述查询相似性得分基于针对所述查询的or条件计算的第一散列值、or条件的权重值以及or索引中指定的第一文档的第二散列值;以及

返回第一文档的指示和所述查询相似性得分,作为对所述查询的响应。

16.根据权利要求15所述的计算机程序产品,其中,所述and索引包括倒排列表,所述倒排列表被配置为存储包括多个特征中的相应特征的每个文档的文档标识符(id),其中所述or索引包括所述多个文档中的每个文档的相应散列值,其中第一散列值、第二散列值和所述or索引中的多个散列值基于局部敏感散列函数来计算。

17.根据权利要求16所述的计算机程序产品,其中,所述查询指定多个and条件,其中,所确定的文档集合满足所述多个and条件中的每个and条件,其中,确定所述文档集合包括:

生成搜索查询,所述搜索查询包括所述查询中指定的所述多个and条件中的每个and条件的指示;

针对所述and索引处理所述搜索查询;以及

从所述and索引接收所述文档集合,所述文档集合包括所述文档集合中的每个文档的文档id。

18.根据权利要求16所述的计算机程序产品,其中,所述查询指定多个or条件,其中,计算所述查询相似性得分包括:

为(i)所述多个or条件中的每个or条件和(ii)所述多个or条件来计算相应散列值;

基于所述多个or条件的散列值和从所述or索引接收的第一文档的第二散列值,计算第一文档相对于所述多个or条件的总相似性得分;

基于从所述or索引接收的第一文档的第二散列值和相应or条件的散列值,计算第一文档相对于每个or条件的相应or相似性得分;

对于超过预定义阈值的每个相应or相似性得分,将与所述相应or条件相关联的权重相加到所述总相似性得分;以及

返回所述总相似性得分作为所述查询相似性得分。

19.根据权利要求15所述的计算机程序产品,所述操作还包括在计算第一文档的相似性得分之前:

从所述or索引接收第一文档的文档标识符(id);以及

确定第一文档的文档id被包括在所述文档集合中。

20.根据权利要求19所述的计算机程序产品,其中,所述and索引和所述or索引是在所述语料库中的多个文档的预处理阶段期间生成的,其中,所述操作还包括:

从所述or索引接收所述语料库中的多个文档中的第二文档的文档标识符(id);

确定第二文档的文档id未被包括在所述文档集合中;

避免计算第二文档的查询相似性得分;以及

避免返回第二文档作为对所述查询的响应。

技术总结
系统、方法和计算机程序产品,被配置为执行包括以下步骤的操作:接收指定AND条件和OR条件的查询,基于AND索引结构确定语料库中的多个文档中的满足查询的AND条件的文档集合,计算文档集合中的第一文档的查询相似性得分,其中查询相似性得分基于针对查询的OR条件计算的第一散列值、OR条件的权重值以及OR索引中指定的第一文档的第二散列值,以及返回第一文档的指示和查询相似性得分,作为对查询的响应。

技术研发人员:吉田一星
受保护的技术使用者:国际商业机器公司
技术研发日:2018.10.23
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-47746.html

最新回复(0)