需求

假设我这里有一堆freebuf或者看雪上的cve漏洞分析的文章,文章数目已经超过1w条,这时候打算按照攻击方法或者受害者对象来分门别类,建立一棵有条理的知识树。

需求分解

数据库:存储1对1或者1对多的标签关系存储,(可以用关系型数据库或者nosql来实现);
操作:能够方便的增删改查;
操作响应速度:不要太慢,(需要使用索引或者cache加速复杂查询的速度);

3种思路

数据库设计

关系型数据库实现方式

1. 标签列表直接保存文章条目中。
思路代码:

post_id title content tag_list
1001 分身 欲练此功,必先.. 火影,鸣人,禁术

优点: 实现简单,容易管理
缺点:删除一个标签随文章属增长而变慢

2. 使用3张表(文章表,文章与标签关系表,标签表)实现一对多的对应关系。
思路代码:
文章表

post_id title content
1001 分身 欲练此功,必先..

关系表

post_id tag_id
1001 3001
1001 3002
1001 3003

标签表

tag_id name
3001 火影
3002 鸣人
3003 禁术

优点: 实现简单,容易管理,tag内容不会出现冗余
缺点: 多种类别的标签处于同一维度,分类混乱
改进: 标签表可以插入一列,记作tag type,就能实现标签的分类了。但是类别本身的从属关系还是无法表示。比如([日本:[书名:[火影],人物:[鸣人]]], 日本系列的该如何表示)

3. 使用nosql数据库,标签随便加,看着跟第一中思路一样会有冗余,但是增删改会很方便。

性能优化

先提一个主流的思路,建立一级到两级索引表,然后利用redis的高性能key-value查询做cache。

分类与标签系统设计初体验-起相关推荐

  1. 【深度之眼】kesci二分类算法大赛之初体验

    0. 写在前面 作为一个重度社恐的老萌新,决定单枪匹马的来参加这个练习赛,也是我参加的第一个此类比赛. 本次练习赛虽然最终成绩真的很普通,欢迎提提高意见,非常感谢. 不过收获真的很多,尝试了很多没接触 ...

  2. Weka初体验——中文文本分类

    最近在公司实习做电商评论相关的数据分析,需要调几个分类器,组里的代码一贯用Java编写,为了提高工作效率,找了找Java环境下的机器学习工具库,发现了Weka这个神奇的东西. Weka介绍及下载 We ...

  3. vSphere 7 Kubernetes 初体验

    vSphere 7 Kubernetes 初体验 分类专栏: NSX-T WCP K8S 文章标签: paas 版权 有关vSphere7 with WCP,即整合Kubernetes的具体介绍,请参 ...

  4. Alfred Remote初体验

    本文首发:Alfred Remote初体验,本cnblogs博客同步更新 Alfred更新到2.6版本之后,Remote的功能终于可以用了.于是第一时间尝试了一下,感觉还是很棒的BIG那是相当的高. ...

  5. AndroidStudio初体验

    style="display: none;" frameborder="0"> 收藏成功 确定 收藏失败,请重新收藏 确定 查看所有私信查看所有通知 暂没 ...

  6. 小熊派4G开发板初体验SDK开发

    小熊派4G开发板初体验 开发板硬件资源介绍 前阵子小熊派发布了一款超高性价比的4G开发板(19.8元包邮),但是板子仅限量1000套.小熊派官方给我送了一块,我们一起来学习学习: 板子做得小巧精致,控 ...

  7. 自然语言处理NLP星空智能对话机器人系列:Facebook StarSpace框架初体验

    自然语言处理NLP星空智能对话机器人系列:Facebook StarSpace框架初体验 目录 Facebook StarSpace github StarSpace 安装部署 编译星际空间 Face ...

  8. #数据挖掘--第3章:建模调参之支持向量机SVM初体验

    #数据挖掘--第3章:建模调参之支持向量机SVM初体验   序言:本系列博客面向初学者,只讲浅显易懂易操作的知识.   基础知识准备:   一.我们在进行训练之前,常常要对样本进行归一化.标准化或正则 ...

  9. 读《Hands-On Transfer Learning with Python》初体验

    读<Hands-On Transfer Learning with Python>初体验 最近由于工作原因及个人兴趣,对迁移学习兴趣盎然,很想深入了解该领域知识,偶得该领域最新力作,现分享 ...

最新文章

  1. Linux嵌入式驱动管理调试平台 ------ 我的第一个开源项目
  2. 【循序渐进学Python】1. Python基础知识
  3. python 每次读一行-转载 python每次读入文件一行的问题(血的教训啊)
  4. python3.4用循环往mysql5.7中写数据并输出
  5. python中变量名存储在哪里_python – 如何在内部存储和映射变量名称?
  6. 数据结构实验二 树和二叉树的实现
  7. linux dhcp客户端配置文件,各个版本DHCP配置文件的整理
  8. 安装JDK 9与使用jshell
  9. 疑似华为Mate X 5G版入网 将支持两种组网方式
  10. lisp 标注螺纹孔_螺纹的表示法和标注
  11. Linux的常用基础命令
  12. WinAPI 字符及字符串函数(13): lstrcmp、lstrcmpi - 对比串
  13. sht21 c语言程序,湿度传感器SHT21示例代码-SampleCodeforSHT21.PDF
  14. 阿贝尔分部求和法的应用(二)
  15. MPI和OpenMP实现矩阵相乘
  16. 什么是VB.NET?
  17. 研究生课程笔记:软件包在流行病学中的应用(二)——csurvey软件+抽样调查
  18. 人生,就是一个个未竟之志叠起来的
  19. 语言学及应用语言学类毕业论文文献有哪些?
  20. Latex论文写作各种小问题

热门文章

  1. 布局人工智能,搜狗“知音”扮演着什么角色?
  2. ABS装置最新发表的论文趋势怎么看?
  3. jquery做简单特效
  4. 解决uni-app chunk-vendors.js:28553 GET http://localhost:8080/sockjs-node/info?t=1624461967173
  5. qml自定义菜单-QML
  6. 【SUMO学习】初级 Hello World
  7. 码率(Bitrate)、帧率(FPS)、分辨率和清晰度的联系与区别
  8. MFC:数据有效机制DDV
  9. Python爬虫入门教程【3】:美空网数据爬取
  10. 利用聚宽免费数据进行量化分析