基于静态Cache的搜索方法、索引数据生成方法以及装置的制造方法

文档序号:9579290阅读:219来源:国知局
基于静态Cache的搜索方法、索引数据生成方法以及装置的制造方法
【技术领域】
[0001]本申请涉及搜索引擎技术,具体涉及一种基于静态Cache的搜索方法和装置。本申请同时提供一种用于静态Cache的索引数据生成方法和装置,以及一种用于获取查询语法树标识的方法和装置。
【背景技术】
[0002]随着互联网的快速发展,网络信息得到爆炸式增长,为了快速地获取所需的信息,用户通常借助搜索引擎。搜索引擎是指根据一定的策略、运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索的相关信息展示给用户的系统。
[0003]缓存(Cache)技术是搜索引擎中被广泛采用的一种提高引擎性能的技术,该技术将常用的查询词及搜索结果、以及与查询相关的索引数据或者是搜索的中间结果存放在缓存中,当接收到用户发起的搜索请求时,通过将搜索请求中的查询信息与缓存中的数据进行匹配,能够有效减少搜索引擎的在线计算量,快速地将搜索结果返回给用户。现有技术中的Cache技术主要分为动态Cache和静态Cache两种。
[0004]采用动态Cache技术,系统会记录一段时间内最频繁访问的查询,并将这些查询结果存放于系统Cache中,当系统再次接受到上述频繁访问的查询时,可以将针对此查询已经缓存的结果直接返回给用户。
[0005]采用静态Cache技术,系统会首先统计先前查询日志中频繁出现的Query查询,并根据这些频繁出现的Query查询计算对应的Hash值并进行打标标记。在对商品数据建引擎索引时,根据商品数据出现高频Query查询数据的情况打上相应的标记,如果在线计算阶段判断出查询串出现高频Query的情况,便通过标记召回快速检索出对应的文档。现有静态Cache技术的处理对象通常是文档中固定的某一维字段(通常为文本字段如商品的标题字段),对搜索请求的处理通常也是基于单层逻辑与关系的,例如:“A”AND “B”。
[0006]随着商务搜索需求的日益增多,客观上要求搜索引擎具备在商品数据集中进行多维度(标题、类目、属性等)、以及复杂逻辑关系(逻辑与、逻辑或、逻辑非)的快速检索功能,然而现有的静态Cache技术因为仅能针对一维字段和单层逻辑与进行处理,因此对于上述复杂检索需求的商务搜索来说,搜索引擎通常要执行多次根据倒排索引召回检索结果的操作,导致搜索引擎性能低下,无法很好地满足线上实时返回搜索结果的需求,从而无法对商务搜索提供有效的支持。

【发明内容】

[0007]本申请提供一种基于静态Cache的搜索方法和装置,以提升搜索效率。本申请另外提供一种用于静态Cache的索引数据生成方法和装置,以及一种用于获取查询语法树标识的方法和装置。
[0008]本申请提供一种基于静态Cache的搜索方法,包括:
[0009]接收来自客户端的搜索请求;
[0010]根据搜索请求中包含的查询信息,生成查询语法树;
[0011]在所述查询语法树中查找是否存在预先生成的高频语法树;若存在,按照从根节点到叶子节点的顺序用预先计算出的所述高频语法树的唯一标识替换所述查询信息中的、与所述高频语法树对应的部分查询信息;所述高频语法树的唯一标识用于在检索阶段从索引库中快速召回与所述部分查询信息对应的搜索结果;
[0012]根据替换后的查询信息对索引库进行检索,获取与所述搜索请求对应的搜索结果,并返回给所述客户端。
[0013]可选的,如果在所述查询语法树中没有找到所述预先生成的高频语法树,则直接根据所述搜索请求包含的查询信息对索引库进行检索。
[0014]可选的,所述搜索请求中的查询信息包括:一个或者一个以上数据对,以及代表数据对之间逻辑关系的逻辑运算符;所述数据对包括索引名及对应的索引值,所述逻辑关系包括:逻辑与、逻辑或、或者逻辑非。
[0015]可选的,在接收来自客户端的搜索请求之前,执行下述操作:
[0016]根据查询日志中的查询信息,生成高频语法树配置信息;
[0017]查找与所述配置信息中的高频语法树相匹配的文档,生成根据高频语法树快速检索到与之匹配文档的索引数据。
[0018]可选的,所述根据查询日志中的查询信息,生成高频语法树配置信息包括:
[0019]针对查询日志中的每条查询信息,生成按照预先设定的规约原则处理后的查询语法树及其唯一标识;
[0020]将在查询日志中出现次数满足设定要求的查询语法树作为高频语法树;高频语法树及其唯一标识共同组成所述高频语法树配置信息。
[0021]可选的,所述针对查询日志中的每条查询信息,生成按照预先设定的规约原则处理后的查询语法树及其唯一标识是指,针对查询日志中的每条查询信息,执行下述操作:
[0022]根据查询信息,生成对应的查询语法树;所述查询语法树的每个叶子节点包括:查询信息中的一对索引名和索引值,非叶子节点代表下一级子节点之间的逻辑关系;
[0023]按照预先设定的规约原则,对所述查询语法树执行规约处理,得到经规约处理后的查询语法树;
[0024]按照预先设定的规则,计算所述经规约处理后的查询语法树的唯一标识。
[0025]可选的,所述预先设定的规约原则包括:
[0026]对于逻辑与,将A& (B&C)或者(A&B) &C都规约为A&B&C ;
[0027]对于逻辑或,将(A | B) | C或者A | (B | C)都规约为A|B|C ;
[0028]对于逻辑非,将A&(B not C)或者(B not C)&A都规约为(A&B)not C。
[0029]可选的,所述按照预先设定的规则,计算所述经规约处理后的查询语法树的唯一标识是指,按照从叶子节点到根节点的顺序,计算所述查询语法树的每个节点的Hash值,并将计算得到的根节点的Hash值作为所述查询语法树的唯一标识。
[0030]可选的,采用如下方式计算所述查询语法树的每个节点的Hash值:
[0031]对于叶子节点,采用该节点包含的索引名和索引值拼接而成的字符串作为预先选定的哈希算法的输入,计算对应的Hash值,并将所述Hash值作为该节点的Hash值;
[0032]对于逻辑与节点,采用下一级子节点Hash值的和作为该节点的Hash值;
[0033]对于逻辑或节点,采用下一级子节点Hash值的乘积作为该节点的Hash值;
[0034]对于逻辑非节点,先将下一级右子节点Hash值按位取反,然后将得到的值与下一级左子节点的Hash值求和,并将得到的值作为该节点的Hash值。
[0035]可选的,所述按照从叶子节点到根节点的顺序计算所述查询语法树的每个节点的Hash值,还包括:
[0036]对下一级子节点的Hash值执行移位操作,用执行移位操作后的Hash值计算所述下一级子节点的上一级节点的Hash值。
[0037]可选的,所述查找与所述配置信息中的高频语法树相匹配的文档,生成根据高频语法树快速检索到与之匹配文档的索引数据是指,针对每一棵高频语法树,与每一个文档执行下述匹配操作:
[0038]根据执行匹配操作的高频语法树每个叶子节点的索引名,获取执行匹配操作的文档中的相应数据,并判断所述数据中是否包含所述叶子节点指定的索引值,若是,则判定所述文档与所述叶子节点匹配成功;
[0039]针对每一个非叶子节点,根据所述非叶子节点代表的逻辑关系、以及非叶子节点的下一级子节点与所述文档的匹配结果,获取所述文档与所述非叶子节点的匹配结果;
[0040]判断所述文档与根节点是否匹配成功;若是,判定所述文档与所述高频语法树匹配成功,将根据所述高频语法树的唯一标识检索所述文档的索引关系添加到索引库中,作为索引库的补充索引。
[0041]可选的,所述根据搜索请求中包含的查询信息,生成查询语法树,包括:
[0042]根据搜索请求中包含的查询信息,生成查询语法树;所述查询语法树的每个叶子节点包括:所述查询信息中的一对索引名和索引值,非叶子节点代表下一级子节点之间的逻辑关系;
[0043]按照与生成高频语法树配置信息相同的规约原则,对所述查询语法树执行规约处理,得到经规约处理后的查询语法树。
[0044]可选的,所述在所述查询语法树中查找是否存在预先生成的高频语法树,包括:
[0045]对所述查询语法树采用递归遍历的方式,采用与生成高频语法树唯一标识相同的算法,计算每个非叶子节点的各个子节点的各种可能组合的语法子树的唯一标识;
[0046]对计算出的每个语法子树的唯一标识,与所述高频语法树配置信息中的高频语法树的唯一标识进行匹配,如果匹配成功则判定所述查询语法树中存在预先生成的高频语法树。
[0047]可选的,所述根据替换后的查询信息对索引库进行检索,获取与所述搜索请求对应的搜索结果,并返回给所述客户端包括:
[0048]根据执行替换操作所用唯一标识对索引库进行检索,获取已静态缓存的、与所述唯一标识代表的部分查询信息对应的搜索结果;
[0049]根据未执行替换操作的其它部分查询信息,对索引库进行检索,获取对应的搜索结果;
[0050]按照查询信息包含的逻辑关系,对上述获取的两类搜索结果进行相应的处理,得到满足查询信息指定查询要求的搜索结果;所述相应的处理包括:合并搜索结果、提取搜索结果中的相同部分、或者从搜索结果中剔除与其他搜索结果相同的部分;
[0051]按照预先设定的排序算法,对经上述处理后的搜索结果进行排序,并将排序后的搜索结果返回给所述客户端。
[0052]相应的,本申请还提供一种基于静态Cache的搜索装置,包括:
[0053]搜索请求接收单元,用于接收来自客户端的搜索请求;
[0054]查询语法树生成单元,用于根据搜索请求中包含的查询信息,生成查询语法树;
[0055]静态缓存替换单元,用于在所述查询语法树中查找是否存在预先生成的高频语法树;若存在,按照从根节点到叶子节点的顺序用预先计算出的所述高频语法树的唯一标识替换所述查询信息中的、与所述高频语法树对应的部分查询信息;所述高频语法树的唯一标识用于在检索阶段从索引库中快速召回与所述部分查询信息对应的搜索结果;
[0056]搜索操作执行单元,用于根据替换后的查询信息对索引库进行检索,获取与所述搜索请求对应的搜索结果,并返回给所述客户端。
[0057]可选的,所述搜索请求接收单元接收的搜索请求中的查询信息包括:一个或者一个以上数据对,以及代表数据对之间逻辑关系的逻辑运算符;所述数据对包括索引名及其对应的索引值,所述逻辑关系包括:逻辑与、逻辑或、或者逻辑非。
[0058]可选的,所述装置还包括:
[0059]配置信息生成单元,用于在接收来自客户端的搜索请求之前,根据查询日志中的查询信息,生成高频语法树配置信息;
[0060]离线文档匹配单元,用于查找与所述配置信息中的高频语法树相匹配的文档,生成根据高频语法树快速检索到与之匹配文档的索引数据。
[0061]可选的,所述配置信息生成单元包括:
[0062]查询日志语法树生成子单元,用于针对查询日志中的每条查询信息,生成按照预先设定的规约原则处理后的查询语法树及其唯一标识;
[0063]高频语法树选择子单元,用于将在查询日志中出现次数满足设定要求的查询语法树作为高频语法树;高频语法树及其唯一标识共同组成所述高频语法树配置信息。
[0064]可选的,所述查询日志语法树生成子单元包括:
[0065]查询日志处理控制子单元,用于针对查询日志中的每条查询信息,依次触发下列查询日志语法树生成子单元、查询日志语法树规约子单元和查询日志语法树标识计算子单元执行相应的动作;
[0066]查询日志语法树生成子单元,用于根据查询信息,生成对应的查询语法树;所述查询语法树的每个叶子节点包括:查询信息中的一对索引名和索引值,非叶子节点代表下一级子节点之间的逻辑关系;
[0067]查询日志语法树规约子单元,用于按照预先设定的规约原则,对所述查询日志语法树生成子单元生成的查询语法树执行规约处理,得到经规约处理后的查询语法树;
[0068]查询日志语法树标识计算子单元,用于按照预先设定的规则,计算所述查询日志语法树规约子单元输出的经规约处理后的查询语法树的唯一标识。
[0069]可选的,所述离线文档匹配单元包括:
[0070]离线文档匹配控制子单元,用于针对每一棵高频语法树,对每一个文档触发下列离线文档叶子节点匹配子单元、离线文档非叶子节点匹配子单元、以及判断及索引数据生成子单元进行相应的处理;
[0071]离线文档叶子节点匹配子单元,用于根据执行匹配操作的高频语法树每个叶子节点的索引名,获取执行匹配操作的文档中的相应数据,并判断所述数据中是否包含所述叶子节点指定的索引值,若是,则判定所述文档与所述叶子节点匹配成功;
[0072]离线文档非叶子节点匹配子单元,用于针对每一个非叶子节点,根据所述非叶子节点代表的逻辑关系、以及非叶子节点的下一级子节点与所述文档的匹配结果,获取所述文档与所述非叶子节点的匹配结果;
[0073]判断及索引数据生成子单元,用于判断所述文档与根节点是否匹配成功;若是,判定所述文档与所述高频语法树匹配成功,将根据所述高频语法树的唯一标识检索所述文档的索引关系添加到索引库中,作为索引库的补充索引。
[0074]可选的,所述查询语法树生成单元包括:
[0075]语法树生成子单元,用于根据搜索请求中包含的查询信息,生成查询语法树;所述查询语法树的每个叶子节点包括:查询信息中的一个数据对,所述数据对包括索引名和对应的索引值,非叶子节点代表下一级子节点之间的逻辑关系;
[0076]规约处理子单元,用于按照所述配置信息生成单元所用相同的规约原则,对所述查询语法树执行规约处理,得到经规约处理后的查询语法树。
[0077]可选的,所述静态缓存替换单元包括:
[0078]高频语法树查找子单元,用于在所述查询语法树中查找是否存在预先生成的高频语法树;
[0079]静态缓存替换执行子单元,用于当所述高频语法树查找子单元找到所述高频语法树时,按照从根节点到叶子节点的顺序用预先计算出的所述高频语法树的唯一标识替换所述查询信息中的、与所述高频语法树对应的部分查询信息;所述高频语法树的唯一标识用于在搜索阶段从索引库中快速召回与所述部分查询信息对应的搜索结果;
[0080]其中,所述高频语法树查找子单元包括:
[0081]语法子树标识计算子单元,用于对所述查询语法树采用递归遍历的方式,采用与生成高频语法树唯一标识相同的算法,计算每个非叶子节点的各个子节点的各种可能组合的语法子树的唯一标识;
[0082]语法子树匹配子单元,用于对计算出的每个语法子树的唯一标识,与所述高频语法树配置信息中的高频语法树的唯一标识进行匹配,如果匹配成功则判定所述查询语法树中存在预先生成的高频语法树。
[0083]可选的,所述搜索操作执行单元包括:
[0084]缓存替换搜索子单元,用于根据执行替换操作所用唯一标识对索引库进行检索,获取已静态缓存的、与所述唯一标识代表的部分查询信息对应的搜索结果;
[0085]常规搜索子单元,用于根据未执行替换操作的其它部分查询信息,对索引库进行检索,获取对应的搜索结果;
[0086]搜索结果处理子单元,用于按照查询信息包含的逻辑关系,对上述获取的两类搜索结果进行相应的处理,得到满足查询信息指定查询要求的搜索结果;所述相应的处理包括:合并搜索结果、提取搜索结果中的相同部分、或者从搜索结果中剔除与其他搜索结果相同的部分。
[0087]搜索结果排序子单元,
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1