请教大神一个按分类精准查询并排序的表设计方式

比如有个行业分类结构如 1-2-3 , 1-2-4 , 5-6-7
如图:

请教大神一个按分类精准查询并排序的表设计方式

信息表可以关联多个终极行业
比如 信息1关联行业3,7, 信息2关联行业4,7, 信息3关联行业7
那么排序逻辑是 最精准的排第一,包含父级排第二,包含祖级排第三

如果我来个搜索条件行业分类是 3
那么排序结果应该是 信息1,信息2

如果搜索条件来的行业分类是4,7
那么排序结果应该是 信息2,信息3,信息1

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 6
sreio

比如有个行业分类结构如 1-2-3 , 1-2-4 , 5-6-7 你应该放一个表结构 :flushed:

3年前 评论
www295686243 (楼主) 3年前
sreio
如果我来个搜索条件行业分类是 3
那么排序结果应该是 信息 1,信息 2

这个只搜索行业分类id为3的,应该只出现信息1才对吧

如果搜索条件来的行业分类是 47
那么排序结果应该是 信息 2, 信息 3, 信息 1

这个搜索行业分类id4、7,结果应该有信息1、信息2、信息3

如果需要这个结果 那么排序结果应该是 信息 2, 信息 3, 信息 1

我认为将行业分类作为信息的子集,然后通过统计每个信息所匹配到的子集数量来排序

3年前 评论

@ware 如果搜索条件是行业3,是有信息2的 因为行业3的父级是行业2 而信息2关联的行业4,7中 行业4的父级也是行业2,所以也是匹配到了的,但没有信息1精准所以排在后面。
我是有想过查出所有关联的信息 然后匹配子集的数量来排序,但每次查询所有信息都查出来感觉不太好,所以问问有没什么更好的方法来设计表

3年前 评论
sreio

@www295686243

信息 2 关联的行业 4,7 中 行业 4 的父级也是行业 2

那就是说也要匹配同级的行业分类咯

处理方案: 每搜索一个行业分类的时候,就要把同级的行业分类和父级所有的分类都需要检索

排序方案继续使用每个信息所匹配到的子集数量来排序,例如刚才同级分类 因为没有关联的子集,所以子集数量是0,只不过这样的逻辑还是太复杂了,只能通过代码来处理吧 :joy:

3年前 评论

kalnoy/nestedset 能解决你的问题吧

3年前 评论
www295686243 (楼主) 3年前

@ware :joy:目前就是检索到所有关联的 然后通过计算来处理排序,就是看起来检索的数据量会有点多,看起来也只能这样了

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!