
1. 项目概述这个基于SpringBoot和大数据技术的诗词学习系统是我在指导本科生毕业设计时开发的一个典型教学案例。它完美融合了传统文化与现代技术既能满足诗词爱好者的学习需求又适合作为计算机专业学生的实践项目。系统最核心的价值在于通过大数据分析技术将传统诗词文化以数字化方式呈现解决了纸质诗集检索不便、学习路径单一的问题。我在实际开发中发现这种结合后端框架与数据分析的项目特别能锻炼学生的全栈开发能力。2. 技术架构解析2.1 SpringBoot框架选型选择SpringBoot作为基础框架主要基于三点考虑自动配置特性大幅简化了SSM框架的整合流程内嵌Tomcat服务器实现开箱即用Starter依赖机制让第三方组件集成变得异常简单实际开发中我们使用了这些关键依赖dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-data-jpa/artifactId /dependency2.2 大数据技术实现方案系统采用Elasticsearch作为诗词检索引擎主要解决三个痛点传统SQL的LIKE查询性能低下需要支持多字段联合检索要实现模糊匹配和相关性排序核心检索接口实现示例public ListPoem search(String keyword) { NativeSearchQueryBuilder queryBuilder new NativeSearchQueryBuilder(); queryBuilder.withQuery(QueryBuilders.multiMatchQuery(keyword, title, content, author)); return elasticsearchTemplate.queryForList(queryBuilder.build(), Poem.class); }3. 核心功能实现3.1 诗词智能推荐模块基于用户浏览历史采用协同过滤算法实现个性化推荐。这里有个关键细节需要对唐诗宋词等不同体裁设置不同的权重系数。算法核心逻辑构建用户-诗词评分矩阵计算用户相似度余弦相似度生成Top-N推荐列表实际开发中发现直接使用用户浏览次数作为评分会导致推荐结果过于集中后来改为浏览时长收藏行为的加权评分效果提升明显。3.2 知识图谱构建使用Neo4j构建诗人关系图谱时遇到的最大挑战是历史人物关系的模糊性。我们的解决方案是设置师承、好友、同朝代等明确关系类型为每种关系添加可信度权重前端用不同颜色和线型区分关系强度MATCH (p1:Poet)-[r:RELATION]-(p2:Poet) WHERE r.weight 0.7 RETURN p1, r, p24. 数据库设计要点4.1 主要表结构诗词表(poem)的核心字段设计CREATE TABLE poem ( id bigint NOT NULL AUTO_INCREMENT, title varchar(100) COLLATE utf8mb4_bin NOT NULL, content longtext COLLATE utf8mb4_bin NOT NULL, author_id bigint NOT NULL, dynasty varchar(20) COLLATE utf8mb4_bin NOT NULL, tags json DEFAULT NULL, analysis text COLLATE utf8mb4_bin, PRIMARY KEY (id), FULLTEXT KEY ft_idx (title,content) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_bin;4.2 性能优化实践针对诗词内容检索的优化方案对标题和内容建立联合全文索引使用MySQL8.0的JSON类型存储标签对高频查询添加Redis缓存缓存实现示例Cacheable(value poem, key #id) public Poem getById(Long id) { return poemRepository.findById(id).orElse(null); }5. 开发踩坑实录5.1 中文分词难题Elasticsearch默认分词器对古诗词效果很差我们测试了多种方案IK分词器对专有名词识别不佳HanLP效果最好但内存占用高结巴分词最终选择的平衡方案配置示例analysis: analyzer: poem_analyzer: type: custom tokenizer: jieba_index5.2 前后端对接陷阱在开发RESTful API时这些细节容易出错日期格式要统一使用ISO8601分页参数要同时支持page/size和offset/limit空字段处理要配置Jackson的序列化策略推荐的标准响应体结构{ code: 200, data: {...}, message: success, timestamp: 2023-08-20T14:30:00Z }6. 部署实践指南6.1 容器化部署使用Docker-compose编排服务的配置要点version: 3 services: mysql: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: root volumes: - ./mysql/data:/var/lib/mysql elasticsearch: image: elasticsearch:7.9.3 environment: - discovery.typesingle-node ulimits: memlock: soft: -1 hard: -16.2 性能调优生产环境必须调整的JVM参数-XX:MaxRAMPercentage75.0 -XX:UseG1GC -XX:MaxGCPauseMillis2007. 项目扩展方向在实际使用中我发现这些功能值得后续开发增加AI作诗模块使用GPT或文心一言开发微信小程序版本加入诗词朗诵音频功能实现OCR识别纸质诗集的功能其中AI作诗接口的简单实现def generate_poem(keyword): prompt f以{keyword}为主题创作一首七言绝句 response openai.ChatCompletion.create( modelgpt-3.5-turbo, messages[{role: user, content: prompt}] ) return response.choices[0].message.content这个项目从设计到实现共耗时3个月最大的收获是认识到技术只是手段如何用数字技术传承传统文化才是更有价值的课题。特别是在处理古诗词的特殊需求时需要不断调整技术方案这过程本身就很值得回味。