跳至主要內容

【search-platform】①概要设计

holic-x...大约 3 分钟项目聚合搜索平台

【search-platform】①概要设计

1.需求分析

👀需求说明

企业级一站式聚合搜索平台open in new window,基于 Vue 3 前端 + Spring Boot 后端 + Elastic Stack 的全栈项目。

​ 对用户来说,使用该平台,可以在同一个页面集中搜索出不同来源、不同类型的内容,提升用户的检索效率和搜索体验。

​ 对企业来说,当企业内部有多个项目的数据都存在搜索需求时,无需针对每个项目单独开发搜索功能,可以直接将各项目的数据源接入搜索中台,从而提升开发效率、降低系统维护成本。

功能说明

​ 聚合搜索页面、图片、用户等信息,还可扩展衍生其他功能

​ 项目特点:该项目选题非常新颖,不同于泛滥的管理系统、商城项目,而是企业架构层面的通用搜索能力的抽象,之后你在做任何系统时,都可以复用本项目的搜索能力。

​ 从0到1的项目实战应用:多种数据爬虫方法、4种数据同步方法、接口优化、多种设计模式、Elastic Stack、压力测试等系列后端必学知识。

​ 关注从需求分析、技术选型、系统设计、项目初始化、前后端开发等步骤,除了学做项目之外,还可进一步提升架构设计思维、学会对比方案、阅读文档的套路,提升自主排查问题、解决Bug的能力。

​ 应用万用后端项目模板,熟练后几分钟开发一个新功能。

✨技术选型

前端:

​ Vue3 + 组件库 Ant Design + 页面状态同步机制

后端:

​ Spring Boot 2.7框架、Springboot-init项目模板

​ 数据库:MySQL数据库

​ 扩展组件:Elastic Stack:Elasticsearch 搜索弓|擎、Logstash数据管道、Kibana 数据可视化

​ 数据抓取:离线和实时抓取、Jsoup和HttpClient库

​ 数据同步(4种方式):定时、双写、Logstash、Canal

​ 设计模式:门面模式、适配器模式、注册器模式

​ 测试:接口测试、JMeter压力测试

项目架构

image-20240308075020157

部署:

​ 服务器 / 容器(平台)

2.概念设计

# 建表脚本

-- 创建库
create database if not exists dada_db_search_platform;

-- 切换库
use dada_db_search_platform;

-- 用户表
create table if not exists user
(
    id           bigint auto_increment comment 'id' primary key,
    userAccount  varchar(256)                           not null comment '账号',
    userPassword varchar(512)                           not null comment '密码',
    unionId      varchar(256)                           null comment '微信开放平台id',
    mpOpenId     varchar(256)                           null comment '公众号openId',
    userName     varchar(256)                           null comment '用户昵称',
    userAvatar   varchar(1024)                          null comment '用户头像',
    userProfile  varchar(512)                           null comment '用户简介',
    userRole     varchar(256) default 'user'            not null comment '用户角色:user/admin/ban',
    createTime   datetime     default CURRENT_TIMESTAMP not null comment '创建时间',
    updateTime   datetime     default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
    isDelete     tinyint      default 0                 not null comment '是否删除',
    index idx_unionId (unionId)
) comment '用户' collate = utf8mb4_unicode_ci;

-- 帖子表
create table if not exists post
(
    id         bigint auto_increment comment 'id' primary key,
    title      varchar(512)                       null comment '标题',
    content    text                               null comment '内容',
    tags       varchar(1024)                      null comment '标签列表(json 数组)',
    thumbNum   int      default 0                 not null comment '点赞数',
    favourNum  int      default 0                 not null comment '收藏数',
    userId     bigint                             not null comment '创建用户 id',
    createTime datetime default CURRENT_TIMESTAMP not null comment '创建时间',
    updateTime datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
    isDelete   tinyint  default 0                 not null comment '是否删除',
    index idx_userId (userId)
) comment '帖子' collate = utf8mb4_unicode_ci;

-- 帖子点赞表(硬删除)
create table if not exists post_thumb
(
    id         bigint auto_increment comment 'id' primary key,
    postId     bigint                             not null comment '帖子 id',
    userId     bigint                             not null comment '创建用户 id',
    createTime datetime default CURRENT_TIMESTAMP not null comment '创建时间',
    updateTime datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
    index idx_postId (postId),
    index idx_userId (userId)
) comment '帖子点赞';

-- https://t.zsxq.com/0emozsIJh

-- 帖子收藏表(硬删除)
create table if not exists post_favour
(
    id         bigint auto_increment comment 'id' primary key,
    postId     bigint                             not null comment '帖子 id',
    userId     bigint                             not null comment '创建用户 id',
    createTime datetime default CURRENT_TIMESTAMP not null comment '创建时间',
    updateTime datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
    index idx_postId (postId),
    index idx_userId (userId)
) comment '帖子收藏';

评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.1.3