zww80216 写道
复杂商品的分类,类似淘宝的分类
1.每类商品有无限级分类
2.每个商品可能会有交叉分类
3.每类商品的扩展属性不一样
比如:
夹克的扩展属性为
款式: 拉链夹克 风格: 休闲 品牌: other/其它 适合季节: 春秋 尺码: M L 颜色: 其它颜色 质地: 纯棉
主板的扩展属性为
品牌: 微星/MSI 类型: Socket478 芯片组: Intel 845 平台类型: Intel平台 宝贝成色: 8成新
这些扩展属性都会动态的变化
那么问题来了:
1.全文搜索如何合理建立?
2.可能后台扩展属性表是否需要动态建立?
3.如果单件商品属于交叉分类的话,查询结果记录重复是否需要?
4.高效的无限级分类算法大家可否指点一二,这个困惑了我很久了?
不求完整解决,给个思路也成
你的问题很多,分别回答。
1.无限分类。树形结构,一般可以认为分类变化的频度很低,所以比较适合于损失插入修改性能以提高查询性能。
树形结构的查询,一般最关心和最区别于普通字典数据的地方就是查询子树问题,在Oracle里对应hierarchical query,即使用connect by语句的递归查询。子树举例说:生物分类中,给出所有的鸟类。
一般的树形结构在表里的物理存储方式有两大类:
1.链表方式。
有各种变形,典型的如,一条记录有唯一id,还有parentId保存父节点的ID。查询子树时需要用SQL递归查询,需要多条SQL。
2.ID即是节点在树中的路径。
比如生物id为001,哺乳动物则为001001,鸟类为001002,前三位是父节点的id,后三位是在本级中节点的ID。依此类推。
这种方案有每级节点数量的限制,因此有其他方案来弥补,比如另设一个字段保存上级节点的ID,这样本级节点的长度实际上是算出来的,而不是固定的。但这些方案的共同点就是,对子树问题,都采取id like '父节点%'的方式,只需一句SQL,但是like的效率并不算很高。
3.Nested Sets方式。
用两个字段保存树形结构关系,left数和right数,规则是:子的left>父的left,子的right<父的right。这种算法专门针对子树问题优化,根据上述规则,它只需要where left>currentNode.left and right<currentNode.right即可。因为left,right都是数字,所以可以利用索引,可以想见,查询的速度非常快,比用Oracle 的connect by实现内部递归的方式更快。
具体参考:http://www.developersdex.com/gurus/articles/112.asp
分享到:
相关推荐
Re: 伪随机数的生成算法? anya 计算并输出表达式结果 anya 计算并输出表达式结果2 anya 递归与栈溢出 anya Re: Excel 规划求解问题,求助,请教!! anya Re: anya:请教一个问题 anya Re: 如何给汉字分界? ...
re:creators op的k值文件
【Python正则实例入门:《Python re(gex)?》随书代码】’py_regular_expressions - Learn Python Regular Expressions step by step from beginner to advanced levels' by Sundeep Agarwal
Mn-RE (RE:Sm , Ho)体系的热力学评估,王翠萍,H.L. Zhang,本研究CALPHAD方法,对Mn-RE (RE:Sm , Ho)进行了热力学评估。固溶体相(liquid)的吉布斯自由能采用了亚规则溶体模型,还有固溶体相((fcc, bc
REVisionFX RE:Match for Mac是一款适用于ae和pr的色彩匹配插件,re:match mac 可以匹配不同镜头之间的色彩,曝光,白平衡,局部色彩匹配等,当你用不同摄像机拍了同一个场景,那么re:match这款插件可以很好的来匹配...
使用Windows操作系统的人有时会遇到这样的错误信息: 「“0X????????”指令引用的“0x00000000”内存,该内存不能为“read”或“written”」,然后应用程序被关闭。 如果去请教一些「高手」,得到的回答往往是「...
RE:DOM dev工具用于Chrome。 RE:适用于Chrome的DOM开发工具来源:https://github.com/pakastin/redom-devtools 支持语言:English
在每个新标签中获取Re:Zero的随机高清壁纸。这个主题是为Re:Zero粉丝制作的。玩的开心! REZERO ANIME NEW TAB-由FreeAddon提供安装我的Re:Zero New Tab主题,每次您打开一个新标签时,即可享受ReZero动漫的各种...
该文档来自VisualOps创始人赵鹏在7月13日Docker Meetup北京的活动,VisualOps是一家专注于企业级白盒PaaS以及Docker集成的公司。赵鹏的演讲主题是“VisualOps–re:Invent PaaS”。
# 网络安全问题概述 ????1) 数据安全 ????????访问(授权访问);存储(容灾、备份或异地备份等)????2) 应用程序 ????????不能因为安装了软件,反而出现更多的漏洞????3) 操作系统安全 ?...网络层安全IPSec(IPS
re:有限制大小知道吗? 3,爱下不下,少废话,分数我够了,但是为了给没有共享精神的人一点麻烦。我每次都设10分以上。 4,上传很麻烦,我求得别人的尊重已经不奢望了,希望留点口德,谢谢大家!
AWS Re:invent大会是AWS一年一度的技术交流盛会,今年还是在拉斯维加斯举行,会议有上千场的主题演讲、chalk talk、workshop,是关于云计算不可多得的一次盛会,附件分享的是此次会议的部分资料,供参考。
机器学习入门包 这是一个包含有关不同机器学习算法的教程的存储库。 让您快速为#NextBillionUsers利用机器学习构建应用程序 :fire: 要开始使用,请转到
Re:VIEW Re:VIEW是用于纸质书和电子书的易于使用的数字出版系统。 支持的格式输出格式Re:VIEW支持:EPUB LaTeX InDesign(IDGXML)Markdown纯文本(TOPBui Re:VIEW Re:VIEW是用于纸质书和电子书的易于使用的...
(实战)[re:Invent 2018]-001:赛道分析-(致敬1024) 配套 train and evaluation log
步骤1$ git clone https://github.com/joelin109/web-app-re.git$ cd web-app-re$ npm install /* Modified for node_modules/material-ui/Drawer/Drawer.js (Line 237) */width: this.props.width >= 736 ?...
谷歌师兄的leetcode刷题笔记 Updated 原版本DeepQA为python ...We're!?! Q: Are you ready ? A: I'm A: What? A: Who? ready? Q: When are you ready ? A: Tomorrow. A: Thursday. A: I, uh., is Q:
(实战)[re:Invent 2018]-001:赛道分析-(致敬1024) 配套资料
官网hibernate:问题说明: 1、安装整合通过; 2、整合时注意javassist-3.22.0-GA.jar与struts2.4的 javassist-3.20.0-GA.jar重复; 3、整合所需基础包以及整合需要的外部包,自己放到一个新建文件夹中,方便大家...
RE:Match是一款非常实用的AE和premiere色彩匹配插件,安装后可以帮助您完成不同镜头拍摄的效果匹配,包含了色彩,曝光,白平衡,局部色彩等,有需要的朋友赶快来下载体验一下吧。 汉化方法: “REMatch1.3.6...