基于区间数的电商类目深度查询方法技术

技术编号:24251481 阅读:45 留言:0更新日期:2020-05-22 23:32
本发明专利技术提供一种基于区间数的电商类目深度查询方法,通过获得类目数据,类目数据中的子类目parent_id存储父类目id,查询类目数据得到类目的父子关系,并根据parent_id对应的父子关系将类目组装成树形结构,得到类目树;计算得到各个类目节点的区间数,包括左区间数和右区间数,并持久化到数据库中;通过对所得数据库中的类目树的各类目节点的左区间数和右区间数进行比较,查询获得父类目下所有的子类目数据,查询获得子类目的所有父类目数据。该种基于区间数的电商类目深度查询方法,查询效率高,且不依赖数据库版本。

Depth query method of e-commerce category based on interval number

【技术实现步骤摘要】
基于区间数的电商类目深度查询方法
本专利技术涉及一种基于区间数的电商类目深度查询方法。
技术介绍
在电商平台,当商品较少时,用户可以一个一个的浏览,然后选择自己喜欢的商品,但当商品越来越多,达到上亿甚至几十亿的时候,用户是没有办法一个进行浏览选择的,此时通常采用建立商品类目的方式来对商品进行划分归类,提高用户获取所需商品的便捷度。电商平台的类目一般是设置成三层,一级类目、二级类目和三级类目这种树状的类目结构,通常叫做类目树。但考虑到商品数据的复杂度偏高或偏低的的情况下,部分类目的层级可能大于或少于三级,所以在数据库设计的时候需要做到灵活可扩展的无限层级,通常采用parent_id的这种平级的的数据结构来存储类目树。类目在电商中属于高频访问数据,所以对查询性能有一定要求,在此结构下,通过子类目查询上父类目,可以通过parent_id来进行查询,但是如果需要通过父类目查询所有子类目(如查询某一级类目下所有商品)或子类目查询所有父类目(如根据子类目,查询类目路径)的时候,通常无法用一条简单的sql进行查询,部分数据库如Oracle提供了startwithconnectbyprior的语法进行递归查询,但递归查询效率不高且强依赖数据库类型,若使用了不支持递归语法的数据库(如mysql),则通常会使用代码来进行查询得到所有子类目再根据子类目查询所有商品,但也需要进行递归,且需要执行多次sql语句查询,效率上也不高。上述问题是在电商类目查询过程中应当予以考虑并解决的问题。
技术实现思路
本专利技术的目的是提供一种基于区间数的电商类目深度查询方法解决现有技术中存在的递归查询效率不高的问题。本专利技术的技术解决方案是:一种基于区间数的电商类目深度查询方法,包括以下步骤,S1、获得类目数据,类目数据中的子类目parent_id存储父类目id,查询类目数据得到类目的父子关系,并根据parent_id对应的父子关系将类目组装成树形结构,得到类目树;S2、对步骤S1中得到的类目树,计算得到各个类目节点的区间数,包括左区间数和右区间数;S3、将步骤S2所获得的类目树的各类目节点的左区间数和右区间数持久化到数据库中;S4、通过对步骤S3中所得数据库中的类目树的各类目节点的左区间数和右区间数进行比较,查询获得父类目下的子类目数据和/或查询获得子类目的父类目数据。进一步地,步骤S2中,计算得到各个类目节点的右区间数为:右区间数rightIndex=左区间数leftIndex+2*类目节点的所有子类目数之+1。进一步地,步骤S2中,对步骤S1中得到的类目树,采用回溯法计算得到各个类目节点的区间数,包括左区间数和右区间数,具体为,S21、设置初始值rangeIndex变量为1,用于计算左区间数,对类目树的所有类目节点进行遍历,在偏历至当前类目节点时,进入下一步骤;S22、判断当前类目节点是否为叶子节点,如当前类目节点是叶子节点,进入下一步骤;如当前类目节点不是叶子节点,进入步骤S24;S23、设置左区间数leftIndex=rangeIndex,并同步设置rangeIndex+1,右区间数rightIndex=leftIndex+1,进入步骤S25;S24、设置左区间数leftIndex=rangeIndex,并同步设置rangeIndex+1;遍历该当前类目节点的所有子类目,获取当前类目节点的所有子类目数之和,设置rightIndex=leftIndex+2*类目节点的所有子类目数之+1;S25、遍历下一类目节点,返回步骤S22,直至偏历完类目树的所有类目节点,得到各类目节点的左区间数和右区间数。进一步地,步骤S21中,采用深度优先遍历对类目树的所有类目节点进行遍历。进一步地,步骤S4中,查询获得父类目下所有的子类目数据,具体为,根据步骤S3中所得数据库中的类目树的各类目节点的左区间数和右区间数,使用sql语句查询出所有左区间数大于父类目的左区间数,且右区间数小于父类目右区间数的所有类目节点,即获得该父类目下所有的子类目数据。进一步地,步骤S5中,查询获得子类目的所有父类目数据,具体为,根据步骤S3中所得数据库中的类目树的各类目节点的左区间数和右区间数,使用sql语句查询出所有左区间数小于子类目左区间数,且右区间数大于子类目右区间数的所有类目节点,即获得子类目的所有父类目数据。有益效果本专利技术的有益效果是:该种基于区间数的电商类目深度查询方法,查询效率高,通过维护区间数的方式来避免递归查找,针对查询效率高,由测试结果可看出本专利技术方法的查询效率得以大幅提高。该方法不依赖数据库版本,任何一种数据库均可实现。该种基于区间数的电商类目深度查询方法,查询逻辑简洁合理,不需要依赖复杂Sql或代码即可实现类目树的深度查询,仅需要对比区间数范围即可实现。附图说明图1是本专利技术实施例基于区间数的电商类目深度查询方法的流程示意图。图2是实施例中将类目组装成树形结构得到的类目树的示意图。图3是实施例中计算得到各个类目节点的区间数的流程示意图。图4是实施例中类目树的各类目节点的左区间数和右区间数的说明示意图。具体实施方式下面结合附图详细说明本专利技术的优选实施例。实施例一种基于区间数的电商类目深度查询方法,包括以下步骤,S1、获得类目数据,类目数据中的子类目parent_id存储父类目id,查询类目数据得到类目的父子关系,并根据parent_id对应的父子关系将类目组装成树形结构,得到类目树;S2、对步骤S1中得到的类目树,计算得到各个类目节点的区间数,包括左区间数和右区间数;步骤S2中,对步骤S1中得到的类目树,采用回溯法计算得到各个类目节点的区间数,包括左区间数和右区间数,具体为,S21、设置初始值rangeIndex变量为1,用于计算左区间数,对类目树的所有类目节点进行遍历,在偏历至当前类目节点时,进入下一步骤;步骤S21中,采用深度优先遍历对类目树的所有类目节点进行遍历。S23、判断当前类目节点是否为叶子节点,如当前类目节点是叶子节点,进入下一步骤;如当前类目节点不是叶子节点,进入步骤S25;S24、设置左区间数leftIndex=rangeIndex,并同步设置rangeIndex+1,右区间数rightIndex=leftIndex+1,进入步骤S26;S25、设置左区间数leftIndex=rangeIndex,并同步设置rangeIndex+1;遍历该当前类目节点的所有子类目,获取当前类目节点的所有子类目数之和,设置rightIndex=leftIndex+2*类目节点的所有子类目数之+1;S26、遍历下一类目节点,返回步骤S23,直至偏历完类目树的所有类目节点,得到各类目节点的左区间数和右区间数。S3、将步骤S2所获得的类目树的各类目节点的左区间数和右区间数持久化到本文档来自技高网...

【技术保护点】
1.一种基于区间数的电商类目深度查询方法,其特征在于:包括以下步骤,/nS1、获得类目数据,类目数据中的子类目parent_id存储父类目id,查询类目数据得到类目的父子关系,并根据 parent_id对应的父子关系将类目组装成树形结构,得到类目树;/nS2、对步骤S1中得到的类目树,计算得到各个类目节点的区间数,包括左区间数和右区间数;/nS3、将步骤S2所获得的类目树的各类目节点的左区间数和右区间数持久化到数据库中;/nS4、通过对步骤S3中所得数据库中的类目树的各类目节点的左区间数和右区间数进行比较,查询获得父类目下的子类目数据和/或查询获得子类目的父类目数据。/n

【技术特征摘要】
1.一种基于区间数的电商类目深度查询方法,其特征在于:包括以下步骤,
S1、获得类目数据,类目数据中的子类目parent_id存储父类目id,查询类目数据得到类目的父子关系,并根据parent_id对应的父子关系将类目组装成树形结构,得到类目树;
S2、对步骤S1中得到的类目树,计算得到各个类目节点的区间数,包括左区间数和右区间数;
S3、将步骤S2所获得的类目树的各类目节点的左区间数和右区间数持久化到数据库中;
S4、通过对步骤S3中所得数据库中的类目树的各类目节点的左区间数和右区间数进行比较,查询获得父类目下的子类目数据和/或查询获得子类目的父类目数据。


2.如权利要求1所述的基于区间数的电商类目深度查询方法,其特征在于:在一个实施方式中,步骤S2中,计算得到各个类目节点的右区间数为:右区间数rightIndex=左区间数leftIndex+2*类目节点的所有子类目数之+1。


3.如权利要求1所述的基于区间数的电商类目深度查询方法,其特征在于:在一个实施方式中,步骤S2中,对步骤S1中得到的类目树,采用回溯法计算得到各个类目节点的区间数,包括左区间数和右区间数,具体为,
S21、设置初始值rangeIndex变量为1,用于计算左区间数,对类目树的所有类目节点进行遍历,在偏历至当前类目节点时,进入下一步骤;
S22、判断当前类目节点是否为叶子节点,如当前类目节点是叶子节点,进入下一步骤;如当前类目节点不是叶子节点,进入步骤S24;
S23、设置左区间数leftIndex=rangeInd...

【专利技术属性】
技术研发人员:陈旋王冲张平王敏
申请(专利权)人:江苏艾佳家居用品有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1