十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

SpringBoot+Vue构建中医药智能推荐平台实践

SpringBoot+Vue构建中医药智能推荐平台实践 1. 项目概述与背景这个经方药食两用服务平台是我去年指导的一个本科毕业设计项目核心目标是搭建一个融合传统中医药理论与现代信息技术的服务平台。平台采用SpringBootVue的前后端分离架构实现了经方查询、药食同源食材推荐、体质辨识等特色功能。在实际开发过程中我们发现现有中医药类平台普遍存在两个痛点一是专业术语晦涩难懂二是缺乏个性化推荐。我们这个平台特别注重用户体验通过可视化方式展示药材属性并基于用户体质测试结果智能匹配经方和食材。2. 技术架构解析2.1 后端技术选型SpringBoot 2.7.12作为后端框架主要考虑了以下因素内嵌Tomcat简化部署自动配置减少XML配置丰富的Starter依赖与MyBatis-Plus的完美整合数据库选用MySQL 8.0关键配置参数spring: datasource: url: jdbc:mysql://localhost:3306/tcm_platform?useSSLfalseserverTimezoneAsia/Shanghai username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver2.2 前端技术方案Vue 3 Element Plus构建管理后台主要特性采用Composition API使用Vite构建工具按需引入组件减小打包体积配置了动态路由和权限控制// 典型API调用示例 const getHerbList async () { try { const res await axios.get(/api/herbs, { params: { page: 1, size: 10 } }) herbList.value res.data.data } catch (err) { ElMessage.error(获取药材列表失败) } }3. 核心功能实现3.1 智能推荐系统基于用户体质测试结果的推荐算法使用改良的AHP层次分析法计算体质维度权重构建药材-功效-体质三维关系矩阵采用改进的协同过滤算法生成推荐// 推荐算法核心代码片段 public ListHerbDTO recommendHerbs(UserPhysiqueDTO physique) { // 1. 计算体质得分 MapString, Double dimensionScores calculateDimensionScores(physique); // 2. 获取候选药材 ListHerb candidates herbMapper.selectByConditions(dimensionScores); // 3. 加权排序 return candidates.stream() .map(h - new HerbDTO(h, calculateMatchScore(h, dimensionScores))) .sorted(Comparator.comparing(HerbDTO::getMatchScore).reversed()) .limit(10) .collect(Collectors.toList()); }3.2 经方知识图谱构建过程数据采集《伤寒论》等典籍结构化处理实体识别使用HanLP进行中药名、症状识别关系抽取基于规则的模式匹配可视化使用Echarts实现交互式图谱4. 数据库设计要点4.1 核心表结构主要表格及其关系用户表(t_user)存储用户基本信息体质测试表(t_physique_test)记录测试结果药材表(t_herb)1200种药材数据经方表(t_prescription)400经典方剂食材表(t_food)800种药食同源食材CREATE TABLE t_herb ( id bigint NOT NULL AUTO_INCREMENT, name varchar(50) NOT NULL COMMENT 药材名称, alias varchar(200) DEFAULT NULL COMMENT 别名, category varchar(20) DEFAULT NULL COMMENT 分类, nature varchar(10) DEFAULT NULL COMMENT 性味, meridian varchar(50) DEFAULT NULL COMMENT 归经, efficacy text COMMENT 功效, contraindication text COMMENT 禁忌, image_url varchar(255) DEFAULT NULL COMMENT 图片URL, PRIMARY KEY (id), FULLTEXT KEY ft_idx (name,alias,efficacy) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;4.2 性能优化措施为高频查询字段添加索引使用全文检索提高模糊查询效率热点数据Redis缓存大文本字段单独分表5. 部署实践5.1 环境准备服务器最低配置要求CPU2核内存4GB磁盘50GB系统CentOS 7.6必备组件JDK 11Node.js 16.xMySQL 8.0Redis 6.xNginx 1.205.2 部署步骤后端部署流程打包SpringBoot应用mvn clean package -DskipTests配置application-prod.yml使用systemd管理服务[Unit] DescriptionTCM Platform Service Aftersyslog.target network.target [Service] Userappuser ExecStart/usr/bin/java -jar /opt/tcm-platform/tcm-platform.jar SuccessExitStatus143 [Install] WantedBymulti-user.target前端部署要点修改API基础地址构建生产环境包npm run build配置Nginxserver { listen 80; server_name tcm.example.com; location / { root /opt/tcm-platform/frontend/dist; index index.html; try_files $uri $uri/ /index.html; } location /api { proxy_pass http://localhost:8080; proxy_set_header Host $host; } }6. 开发经验总结6.1 中医药数据处理技巧非结构化数据处理使用正则表达式提取典籍中的方剂组成建立同义词词典解决别名问题开发专用的标注工具辅助人工校验数据质量控制设置多级审核流程建立版本控制系统实现数据变更追溯6.2 性能优化实践接口响应时间从1200ms优化到300ms的关键措施添加多级缓存Redis 本地缓存优化SQL查询避免N1问题使用Hutool的BloomFilter防止缓存穿透前端加载优化图片懒加载路由级代码分割Gzip压缩静态资源7. 常见问题解决方案7.1 跨域问题处理开发环境解决方案Configuration public class CorsConfig implements WebMvcConfigurer { Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping(/**) .allowedOrigins(*) .allowedMethods(GET, POST, PUT, DELETE) .allowCredentials(true) .maxAge(3600); } }生产环境推荐方案使用Nginx反向代理配置CORS响应头对于复杂请求启用OPTIONS预检缓存7.2 中医药术语匹配难题我们采用的解决方案构建领域词典实现拼音模糊匹配开发上下文感知的纠错算法引入词向量计算语义相似度// 术语匹配示例 public ListString matchHerbNames(String input) { // 1. 精确匹配 ListString exactMatches herbMapper.selectNamesByName(input); if (!exactMatches.isEmpty()) return exactMatches; // 2. 拼音匹配 ListString pinyinMatches herbMapper.selectNamesByPinyin(input); // 3. 别名匹配 ListString aliasMatches herbMapper.selectNamesByAlias(input); // 合并并去重 return Stream.concat(pinyinMatches.stream(), aliasMatches.stream()) .distinct() .limit(5) .collect(Collectors.toList()); }8. 项目扩展方向移动端适配开发微信小程序版本实现扫码识药功能增加AR药材展示智能问诊集成NLP引擎构建症状-方剂关联模型开发对话式问诊流程电商功能扩展药材溯源系统在线问诊开方智能煎药预约这个项目从技术实现到业务逻辑都有不少值得深入的点特别是在处理中医药这种专业领域数据时需要特别注重数据的准确性和专业性。我们在开发过程中建立了严格的数据审核流程并邀请中医药专家参与校验这是保证平台专业度的关键
返回列表