基于Python + PySpark的网络小说推荐系统设计与实现毕设源码 博主介绍✌ 专注于Java,python,✌关注✌私信我✌具体的问题我会尽力帮助你。一、研究目的本研究旨在构建一套高效、可扩展的网络小说推荐系统以满足海量用户个性化阅读需求。通过采用Python语言与PySpark框架系统能够在分布式计算环境下实现对大规模用户行为数据的实时采集、清洗与特征工程处理从而提升推荐模型的训练速度与预测精度。研究将聚焦于多维度特征融合技术包括文本语义嵌入、用户兴趣演化轨迹以及社交网络影响因素以构建更为细腻的用户画像和小说内容表示。系统设计将采用协同过滤与深度学习相结合的混合推荐算法利用矩阵分解、神经协同过滤及注意力机制等方法实现精准匹配与多样化输出。进一步地本研究将引入在线A/B测试与多臂老虎机算法对推荐策略进行持续优化并通过实验评估其在点击率、停留时长与用户满意度等指标上的提升效果。通过对比传统单一模型与本系统的性能差异验证分布式计算与多模态特征融合在大规模推荐场景中的有效性。最终本研究期望为网络小说平台提供一套可落地、易维护的技术方案推动个性化阅读体验向更高层次发展。二、研究意义本研究的意义体现在技术创新、产业应用与学术价值三方面。首先在技术层面利用Python与PySpark实现大规模分布式数据处理为网络小说推荐系统提供了高效的数据预处理与特征抽取管线突破了传统单机计算在海量文本与用户行为数据处理上的瓶颈其次在算法创新方面将协同过滤、深度学习与注意力机制等多种模型相结合构建多模态特征融合框架可显著提升推荐准确性与多样性为个性化阅读体验提供更精准的内容匹配再次在产业应用层面系统能够满足主流网络文学平台对实时推荐、动态更新与可解释性的需求降低运营成本、提升用户黏性并为内容创作者提供数据驱动的营销决策支持最后在学术价值方面本研究通过大规模实验验证分布式计算与多模态特征融合在推荐系统中的有效性为后续研究提供了可复制的实验框架与评估指标推动推荐算法与自然语言处理技术的深度融合。除此之外系统采用在线A/B测试与多臂老虎机算法进行策略迭代可实时评估不同推荐策略对用户行为的影响为理论与实践提供可量化的反馈机制再者研究中构建的用户画像模型兼顾兴趣演化与社交影响可为其他内容平台在跨域迁移与多任务学习方面提供参考最后通过对比实验本研究验证了分布式训练在提升模型泛化能力与降低延迟方面的优势为大规模推荐系统的工业落地奠定了技术基础。三、国内外研究现状在全球范围内网络小说推荐系统的研究已从传统协同过滤方法逐步演进至融合深度学习与大数据技术的多模态推荐框架。早期研究多聚焦于基于用户评分矩阵的矩阵分解技术如奇异值分解SVD与隐语义模型旨在挖掘潜在兴趣维度随后研究者引入稀疏性约束与正则化手段以提升模型的泛化能力。进入十年初随着深度学习技术的成熟神经协同过滤NCF及其变种被广泛应用于推荐任务中通过多层感知机或卷积网络对用户与物品特征进行非线性映射从而显著提升预测精度。与此同时注意力机制与Transformer结构被引入推荐模型以捕捉长距离依赖关系并提升内容语义表达能力。大数据平台方面Apache Spark、Hadoop MapReduce 等分布式计算框架被广泛用于离线训练与批量预测满足海量用户行为数据的处理需求。在国内网络小说推荐系统的研究起步相对较晚但近年来已形成多条研究路线。学者们首先关注文本特征提取利用Word2Vec、FastText 或 BERT 等预训练语言模型将小说章节或标签转换为稠密向量随后将这些文本向量与用户行为序列结合构建基于内容的混合推荐模型。国内多家高校与企业在实验平台上实现了基于Spark的分布式特征工程流水线能够实时处理数千万级别的点击、收藏与阅读时长数据。近年来研究者尝试将社交网络信息与用户兴趣演化模型相结合利用图神经网络GNN捕捉用户之间的影响关系从而提升冷启动与多样性表现。国内论文在算法创新方面也不乏亮点例如基于多任务学习的推荐框架将阅读兴趣预测与章节热度预测联合训练以共享表示提升整体性能。主要研究方向可归纳为三大类一是基于协同过滤的传统方法强调矩阵分解与隐语义模型二是深度学习驱动的模型涵盖NCF、注意力网络、Transformer 与图神经网络等三是多模态融合与大数据平台。成效方面国外研究在算法精度上已取得显著突破尤其在Netflix Prize等公开竞赛中通过集成学习与深度模型实现了点击率提升数个百分点国内研究则在数据规模与实时性方面表现突出通过Spark实现了近实时的特征更新与在线推理。评估指标普遍采用RMSE、MAE、Precisionk、Recallk及NDCG等部分工作还引入用户满意度调查与A/B测试验证模型的商业价值。然而现有研究仍存在若干不足。首先文本语义表示在长篇网络小说中仍难以捕捉情节发展与人物关系的动态变化其次多模态特征融合往往缺乏统一框架导致模型复杂度高、可解释性差再次在分布式训练与在线推理过程中模型更新频率与延迟仍未能满足极端实时需求。针对这些挑战未来研究可进一步探索基于生成对抗网络的文本增强、可解释推荐机制以及边缘计算与模型压缩技术以实现更精准、更高效、更透明的网络小说推荐服务。四、预期达到目标及解决的关键问题本研究的总体目标是构建一套基于Python与PySpark技术栈的网络小说推荐系统能够在大规模用户行为数据与海量文本内容的环境下实现高效的数据预处理、特征抽取与模型训练并通过混合协同过滤与深度学习算法提供精准且多样化的个性化推荐。系统应支持实时数据流的接入与离线批处理的结合满足在线推荐服务对低延迟与高吞吐量的双重需求同时具备可扩展性以便后续功能迭代与模型升级。研究还将通过A/B测试与多臂老虎机算法验证推荐策略在实际业务指标如点击率、停留时长、用户满意度上的有效提升并对模型的可解释性进行评估以增强系统的透明度与用户信任。关键问题主要包括一是如何在分布式计算框架中高效实现文本语义嵌入与序列特征工程兼顾计算资源与模型精度二是如何设计多模态特征融合机制将用户行为、文本内容与社交网络信息有机整合以提升冷启动与长尾物品的推荐效果三是如何在实时推理过程中降低模型延迟采用模型压缩或边缘计算策略以满足大规模并发请求四是如何构建可解释的推荐决策路径利用注意力权重或特征重要性分析提供透明反馈五是如何通过在线学习与增量训练机制持续更新模型参数以跟踪用户兴趣的动态变化。解决上述问题将为网络小说平台提供一套可落地、易维护且具备竞争优势的推荐技术方案。五、研究内容本研究首先构建完整的数据采集与预处理流水线利用PySpark Structured Streaming实时接收用户点击、收藏、阅读时长等行为日志并通过Kafka或Flume等消息中间件将原始事件流聚合至HDFS或S3存储。随后在离线阶段使用Spark SQL对日志进行清洗与归一化剔除异常值与缺失记录并对文本字段如章节标题、简介进行分词、停用词过滤与词向量映射本项目将采用预训练的中文BERT模型生成句子级别嵌入同时结合FastText提取多粒度词向量以兼顾语义深度与计算效率。通过Spark MLlib的特征转换器对用户行为序列进行窗口化处理生成时间序列特征对小说元数据作者、标签、出版年份进行One-Hot编码与统计特征提取对社交网络信息关注关系、评论互动构建邻接矩阵以便后续图神经网络使用。在模型设计层面研究将实现多模态混合推荐框架。基于协同过滤的隐语义模型如ALS作为基线用于快速生成全局兴趣向量随后引入神经协同过滤NCF模块将用户与物品稠密向量通过多层感知机映射捕捉非线性交互为建模用户兴趣演化构建长短期记忆网络LSTM或Transformer编码器对用户行为序列进行时序建模并通过注意力机制聚焦关键行为针对社交影响利用图卷积网络GCN对用户邻接矩阵进行传播生成社交兴趣向量。最终将上述多源特征拼接后输入全连接层输出推荐评分或概率分布。模型训练将在Spark集群上使用MLlib的分布式梯度下降与TensorFlowOnSpark或Horovod实现大规模并行化并通过参数服务器方式共享模型权重。系统部署将采用微服务架构PySpark批处理作业负责离线特征更新与模型训练在线推理则通过Spark Structured Streaming实时计算用户最近行为特征并将预训练好的深度模型部署至TensorFlow Serving或TorchServe提供RESTful接口。为降低推理延迟将采用模型量化与蒸馏技术压缩网络参数并在边缘节点缓存热点小说向量提升并发吞吐。系统将集成Redis或Memcached做热数据缓存并通过Kafka Topic实现模型更新的热插拔保证服务可持续升级。评估机制分为离线与在线两部分。离线评估将使用RMSE、MAE、Precisionk、Recallk及NDCG等指标对不同模型组合进行交叉验证在线评估将通过A/B测试对比实验监测点击率、停留时长、转化率等业务关键指标并利用多臂老虎机算法动态分配流量以寻找最优推荐策略。为提升模型可解释性研究将提取注意力权重与特征重要性生成可视化报告供产品团队参考。通过上述方法本研究旨在实现一套高效、可扩展且易于维护的网络小说推荐系统为用户提供精准多样化的阅读体验并为学术界提供基于PySpark与深度学习融合的实证案例。六、需求分析用户需求方面本研究首先关注网络小说读者对个性化阅读体验的强烈渴求用户期望系统能够根据其历史点击、收藏、阅读时长以及章节偏好等行为数据精准推送符合兴趣的小说与章节其次用户对推荐内容的多样性与新颖性同样具有高度关注过度相似或重复的推荐会导致兴趣枯竭从而影响平台黏性再次用户在阅读过程中往往需要即时反馈与解释以理解系统为何推送某部作品从而提升信任度和满意度此外移动端用户对低延迟、高并发的在线推理能力提出了严格要求尤其在高峰期流量激增时仍需保持稳定响应最后部分用户群体对内容审查与版权合规性有特殊需求希望推荐系统能够过滤违规或未经授权的小说以维护平台合法运营。功能需求方面系统必须实现完整的数据采集与预处理流水线能够通过Kafka或Flume等消息中间件实时接收用户行为日志并在Spark Structured Streaming中进行清洗、去重与时间窗口划分随后离线阶段需利用Spark SQL对文本字段进行分词、停用词过滤并通过BERT或FastText生成高维语义向量对用户行为序列采用滑动窗口技术提取时序特征并将小说元数据与社交网络信息转换为稠密向量形成统一的特征矩阵在模型训练层面系统应支持多模态混合推荐框架包括ALS隐语义模型、神经协同过滤、LSTM/Transformer时序建模以及GCN图卷积网络以实现精准度与多样性的平衡在线推理模块需将训练好的深度模型部署至TensorFlow Serving或TorchServe并通过Redis缓存热点小说向量降低推理延迟系统还必须集成A/B测试框架和多臂老虎机算法实现实时策略评估与动态流量分配最后系统需提供监控与日志分析功能持续跟踪点击率、停留时长、转化率等关键指标并通过可视化仪表盘向业务团队展示模型表现与改进空间。七、可行性分析经济可行性方面本研究采用Python与PySpark等开源技术栈软件许可成本极低主要投入集中在硬件与云计算资源上通过使用亚马逊EC2或阿里云ECS实例可按需弹性扩容避免一次性大额资本支出存储层面采用HDFS或S3对象存储规模可随业务增长线性扩展成本相对可控人力资源方面项目需要数据科学家、算法工程师与系统运维人员预计每年人工成本占总预算的40%至50%然而通过提升用户停留时长与转化率可在短期内实现显著的收入增长进一步抵消研发投入此外系统可通过增值服务如个性化订阅、广告精准投放为平台创造新的盈利模式从而增强整体经济可行性。社会可行性方面网络小说推荐系统涉及大量用户个人行为数据与阅读偏好信息必须严格遵守《个人信息保护法》与《网络安全法》在数据采集、存储与处理过程中实施加密与匿名化措施以获得用户信任同时系统需配合平台内容审核机制过滤违规、低俗或侵权小说避免因推荐不当内容导致的社会舆论风险此外算法可能产生的推荐偏见与信息茧房效应需要通过多样性约束与公平性评估机制加以缓解以满足公众对算法透明度与公正性的期待最后系统的推广与应用将提升读者阅读体验促进文化传播与知识普及符合社会公共利益从而获得监管机构与公众的支持。技术可行性方面PySpark提供了成熟的分布式数据处理框架可在集群环境下实现海量日志的实时采集与离线批处理Spark MLlib与TensorFlowOnSpark等工具能够高效训练协同过滤、深度学习及图神经网络模型满足多模态特征融合需求BERT、FastText等预训练语言模型在Python生态中已具备成熟的实现可通过GPU加速进行文本嵌入系统架构采用微服务与容器化部署支持弹性伸缩与灰度发布降低运维风险然而在低带宽或高延迟网络环境下实时推理可能受到影响需要在边缘节点缓存热点向量或采用模型压缩技术以保持低延迟综上所述现有技术栈与工具链能够满足项目需求技术实现具备高度可行性。八、功能分析系统功能模块可划分为数据采集与预处理、特征工程与存储、离线模型训练、在线模型服务、推荐生成与推送、用户交互接口以及监控与评估等七大核心模块。每一模块均围绕实现高效、可扩展的网络小说推荐体系而设计并通过微服务架构实现解耦与弹性伸缩。数据采集与预处理模块负责实时接收用户行为日志与文本内容。通过Kafka或Flume等消息中间件将点击、收藏、阅读时长等事件推送至Spark Structured Streaming随后利用Spark SQL对原始日志进行清洗、去重与时间窗口划分并将结果持久化至HDFS或S3对象存储。此模块同时负责文本字段的分词与停用词过滤并调用预训练的BERT模型生成句子级别嵌入或使用FastText提取多粒度词向量以构建文本语义特征。特征工程与存储模块在离线阶段对用户行为序列进行窗口化处理生成时间序列特征对小说元数据作者、标签、出版年份进行One-Hot编码与统计特征提取并将社交网络信息关注关系、评论互动构建邻接矩阵为后续图神经网络提供输入。所有特征向量统一存储于Spark DataFrame中并通过Parquet格式持久化以便后续模型训练与在线推理快速读取。离线模型训练模块采用Spark MLlib与TensorFlowOnSpark实现分布式训练。基线协同过滤模型ALS用于生成全局兴趣向量神经协同过滤NCF通过多层感知机捕捉非线性交互LSTM或Transformer编码器对用户行为序列进行时序建模并通过注意力机制聚焦关键行为图卷积网络GCN处理社交邻接矩阵生成社交兴趣向量。最终将上述多源特征拼接后输入全连接层输出推荐评分。模型训练完成后将权重导出至模型仓库并通过TensorFlow Serving或TorchServe部署在线推理服务。在线模型服务模块负责低延迟推理与实时特征更新。通过Spark Structured Streaming实时计算用户最近行为特征并将其与预先缓存的小说向量进行拼接调用已部署的深度模型生成推荐分数。为降低延迟系统采用模型量化与蒸馏技术压缩网络参数并在边缘节点缓存热点小说向量。服务通过RESTful API暴露给前端与移动端支持批量请求与实时推送。推荐生成与推送模块将模型输出的分数进行排序、过滤与多样性约束生成最终推荐列表。此模块还实现了冷启动策略基于内容相似度或热门榜单以及新书上架即时推送功能。推荐结果通过消息队列推送至用户客户端并记录回传的点击与停留时长以供后续在线学习。用户交互接口模块提供完整的API与SDK支持移动端、Web端与第三方平台对接。接口层实现身份认证、权限校验、请求限流以及日志记录功能并将用户反馈如收藏、点赞实时写入事件流供数据采集模块消费。监控与评估模块负责实时监测系统性能与业务指标。通过Prometheus与Grafana收集CPU、内存、网络延迟等技术指标利用A/B测试框架对不同推荐策略进行在线评估并通过多臂老虎机算法动态分配流量以寻找最优模型。评估结果以Precisionk、Recallk、NDCG等指标呈现给业务团队并支持模型回滚与灰度发布。以上七大功能模块通过微服务架构实现解耦利用容器化与CI/CD流水线保证快速迭代与高可用性从而满足网络小说平台对实时性、准确性与可扩展性的综合需求。九、数据库设计字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注user_id | 用户唯一标识 | 36 | CHAR(36) | 主键 |username | 用户名 | 50 | VARCHAR(50) ||email| 邮箱地址|100|VARCHAR(100)||created_at| 注册时间|19|DATETIME||updated_at| 更新时间|19|DATETIME||字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注novel_id | 小说唯一标识 | 36 | CHAR(36) | 主键 |title| 小说标题|200|VARCHAR(200)||author_id| 作者标识|36|CHAR(36)|外键:authors.author_id||publish_date| 出版日期|10|DATE||summary| 简介文本|5000|TEXT||created_at| 创建时间 |19 |DATETIME||updated_at | 更新时间 |19 |DATETIME||字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注chapter_id| 章节唯一标识|36|CHAR(36)|主键||novel_id| 所属小说标识|36|CHAR(36)|外键:novels.novel_id||chapter_number| 章节序号|10|INT||title | 章节标题 |200 |VARCHAR(200)||content | 章节内容 |50000 |TEXT||created_at | 创建时间 |19 |DATETIME||字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注author_id| 作者唯一标识|36|CHAR(36)|主键||name| 作者姓名|100|VARCHAR(100)||bio| 作者简介|2000|TEXT||字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注tag_id | 标签唯一标识 | 36 | CHAR(36) | 主键 ||name | 标签名称 | 50 | VARCHAR(50) ||字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注novel_tag_id| 关联标识|36|CHAR(36)|主键||novel_id| 所属小说标识|36|CHAR(36)|外键:novels.novel_id||tag_id| 所属标签标识|36|CHAR(36)|外键:tags.tag_id||字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注behavior_id | 行为唯一标识 | 36 | CHAR(36) | 主键 ||user_id| 用户标识|36|CHAR(36)|外键:users.user_id||novel_id| 小说标识|36|CHAR(36)|外键:novels.novel_id||chapter_id| 章节标识可为空|36|CHAR(36)|外键:chapters.chapter_id||behavior_type | 行为类型click, collect, read | 20 | VARCHAR(20) ||behavior_time | 行为时间 | 19 | DATETIME ||字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注user_tag_interest_id| 关联标识|36|CHAR(36)|主键||user_id| 用户标识|36|CHAR(36)|外键:users.user_id||tag_id| 标签标识|36|CHAR(36)|外键:tags.tag_id||interest_score | 兴趣得分 | 10 | FLOAT ||字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注relation_id| 关系唯一标识|36|CHAR(36)|主键||user_id| 用户标识|36|CHAR(36)|外键:users.user_id||friend_id| 好友标识|36|CHAR(36)|外键:users.user_id||relation_type | 关系类型follow, friend | 20 | VARCHAR(20) ||字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注recommendation_id| 推荐记录唯一标识|36|CHAR(36)|主键||user_id| 用户标识|36|CHAR(36)|外键:users.user_id||novel_id| 推荐小说标识|36|CHAR(36)|外键:novels.novel_id||score | 推荐分数 | 10 | FLOAT ||generated_at | 生成时间 | 19 | DATETIME ||十、建表语句CREATE DATABASE IF NOT EXISTS novel_recommendation CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;USE novel_recommendation;-- 用户表CREATE TABLE users (user_id CHAR(36) NOT NULL,username VARCHAR(50) NOT NULL,email VARCHAR(100) NOT NULL,created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (user_id),UNIQUE KEY idx_users_email (email)) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 作者表CREATE TABLE authors (author_id CHAR(36) NOT NULL,name VARCHAR(100) NOT NULL,bio TEXT,PRIMARY KEY (author_id)) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 小说表CREATE TABLE novels (novel_id CHAR(36) NOT NULL,title VARCHAR(200) NOT NULL,author_id CHAR(36) NOT NULL,publish_date DATE,summary TEXT,created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (novel_id),KEY idx_novels_author_id (author_id),CONSTRAINT fk_novels_author FOREIGN KEY (author_id) REFERENCES authors(author_id) ON DELETE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 章节表CREATE TABLE chapters (chapter_id CHAR(36) NOT NULL,novel_id CHAR(36) NOT NULL,chapter_number INT UNSIGNED NOT NULL,title VARCHAR(200),content TEXT,created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (chapter_id),KEY idx_chapters_novel_id (novel_id),CONSTRAINT fk_chapters_novel FOREIGN KEY (novel_id) REFERENCES novels(novel_id) ON DELETE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 标签表CREATE TABLE tags (tag_id CHAR(36) NOT NULL,name VARCHAR(50) NOT NULL,PRIMARY KEY (tag_id),UNIQUE KEY idx_tags_name (name)) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 小说标签关联表CREATE TABLE novel_tags (novel_tag_id CHAR(36) NOT NULL,novel_id CHAR(36) NOT NULL,tag_id CHAR(36) NOT NULL,PRIMARY KEY (novel_tag_id),UNIQUE KEY uk_novel_tag (novel_id, tag_id),KEY idx_novel_tags_novel_id (novel_id),KEY idx_novel_tags_tag_id (tag_id),CONSTRAINT fk_novel_tags_novel FOREIGN KEY (novel_id) REFERENCES novels(novel_id) ON DELETE CASCADE,CONSTRAINT fk_novel_tags_tag FOREIGN KEY (tag_id) REFERENCES tags(tag_id) ON DELETE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 行为日志表CREATE TABLE behaviors (behavior_id CHAR(36) NOT NULL,user_id CHAR(36) NOT NULL,novel_id CHAR(36) NOT NULL,chapter_id CHAR(36),behavior_type VARCHAR(20) NOT NULL,behavior_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY (behavior_id),KEY idx_behaviors_user_id (user_id),KEY idx_behaviors_novel_id (novel_id),KEY idx_behaviors_chapter_id (chapter_id),KEY idx_behaviors_type_time (behavior_type, behavior_time),CONSTRAINT fk_behaviors_user FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE,CONSTRAINT fk_behaviors_novel FOREIGN KEY (novel_id) REFERENCES novels(novel_id) ON DELETE CASCADE,CONSTRAINT fk_behaviors_chapter FOREIGN KEY (chapter_id) REFERENCES chapters(chapter_id) ON DELETE SET NULL) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 用户标签兴趣表CREATE TABLE user_tag_interests (user_tag_interest_id CHAR(36) NOT NULL,user_id CHAR(36) NOT NULL,tag_id CHAR(36) NOT NULL,interest_score FLOAT NOT NULL DEFAULT 0,PRIMARY KEY (user_tag_interest_id),UNIQUE KEY uk_user_tag (user_id, tag_id),KEY idx_user_tag_interests_user_id (user_id),KEY idx_user_tag_interests_tag_id (tag_id),CONSTRAINT fk_user_tag_interests_user FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE,CONSTRAINT fk_user_tag_interests_tag FOREIGN KEY (tag_id) REFERENCES tags(tag_id) ON DELETE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 用户关系表CREATE TABLE relations (relation_id CHAR(36) NOT NULL,user_id CHAR(36) NOT NULL,friend_id CHAR(36) NOT NULL,relation_type VARCHAR(20) NOT NULL,PRIMARY KEY (relation_id),UNIQUE KEY uk_user_friend (user_id, friend_id),KEY idx_relations_user_id (user_id),KEY idx_relations_friend_id (friend_id),CONSTRAINT fk_relations_user FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE,CONSTRAINT fk_relations_friend FOREIGN KEY (friend_id) REFERENCES users(user_id) ON DELETE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 推荐记录表CREATE TABLE recommendations (recommendation_id CHAR(36) NOT NULL,user_id CHAR(36) NOT NULL,novel_id CHAR(36) NOT NULL,score FLOAT NOT NULL,generated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY (recommendation_id),KEY idx_recommendations_user_id (user_id),KEY idx_recommendations_novel_id (novel_id),CONSTRAINT fk_recommendations_user FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE,CONSTRAINT fk_recommendations_novel FOREIGN KEY (novel_id) REFERENCES novels(novel_id) ON DELETE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;下方名片联系我即可~大家点赞、收藏、关注、评论啦 、查看下方获取联系方式