欢迎光临
我们一直在努力

基于RAG的旅游个性化推荐系统设计计算机毕业设计(源码+lw+部署文档+讲解等)

博主介绍:✌ 专注于VUE,小程序,安卓,Java,python,物联网专业,有18年开发经验,长年从事毕业指导,项目实战✌选取一个适合的毕业设计题目很重要。✌关注✌私信我✌具体的问题,我会尽力帮助你。

一、研究目的

随着全球旅游业的快速发展,旅游者在出行前对目的地、线路、住宿等信息的需求日益多样化,传统基于规则或协同过滤的推荐系统往往难以兼顾用户个性化偏好与实时信息动态更新,从而导致推荐结果缺乏精准度与时效性。为解决上述问题,本文聚焦于构建一种基于检索增强生成(RAG)技术的旅游个性化推荐系统,该系统通过先检索海量旅游资源与用户历史行为,再利用生成模型对检索结果进行语义融合与个性化加工,以实现更为精准、可解释且动态适应的推荐服务。研究目的主要包括:首先,探索RAG框架在旅游推荐场景中的可行性与优势,验证其在处理大规模多模态旅游数据时的性能表现;其次,设计并实现一套端到端的推荐流水线,包括用户画像构建、检索模块、生成模块与评估机制,以满足不同用户群体的多样化需求;再次,通过与传统协同过滤、内容过滤以及混合推荐方法的对比实验,量化RAG模型在准确率、召回率、覆盖度及用户满意度等指标上的提升;最后,构建可视化交互界面,使旅游服务提供者能够实时监控推荐效果并根据业务反馈进行模型微调,从而实现系统的可持续迭代。通过上述目标的实现,本文期望为旅游行业提供一种高效、灵活且具备可解释性的个性化推荐方案,推动旅游信息服务向更精准、智能化方向发展。在此基础上,本文将进一步研究RAG模型的参数调优策略,包括检索召回阈值、生成温度、上下文长度等关键因素,以平衡生成质量与计算效率。除此之外,考虑到旅游推荐的多模态特性,本文还将引入图像、文本与位置数据的联合嵌入技术,使模型能够更好地捕捉景点视觉吸引力与用户情感偏好。为验证系统在真实环境中的可行性,本文计划与某大型旅游平台合作,开展A/B测试,收集用户点击率、停留时长、转化率等行为数据,并通过离线评估与在线实验相结合的方式,对比分析RAG模型与传统方法的差异。最终,本研究旨在为旅游行业提供一种可推广、可解释且易于部署的个性化推荐框架,帮助平台提升用户黏性与商业价值,并为学术界提供新的研究思路与实验数据。

二、研究意义

在当今信息爆炸与旅游需求多元化的背景下,传统基于规则或协同过滤的推荐系统已难以满足用户对个性化、即时性与可解释性的高标准要求,导致用户体验下降与平台竞争力削弱。本文提出的基于检索增强生成(RAG)的旅游个性化推荐系统,能够在海量旅游资源与用户行为数据中快速检索相关信息,并通过生成模型对检索结果进行语义融合与个性化加工,从而显著提升推荐准确率、覆盖度与可解释性。该技术的引入不仅突破了传统方法在处理多模态数据时的瓶颈,还为旅游行业提供了一种可持续迭代的智能服务框架,能够实时响应用户偏好变化与旅游资源更新,提升平台运营效率与商业价值。与此同时,RAG模型在生成层面具备较强的上下文理解与知识融合能力,可实现对用户情感、兴趣与行为模式的深度挖掘,为旅游产品推荐提供更为精准的个性化标签,从而增强用户黏性与满意度。通过与传统协同过滤、内容过滤及混合推荐方法的对比实验,本文将系统评估RAG模型在准确率、召回率、覆盖度以及用户满意度等多维指标上的优势,为行业实践提供客观依据。更重要的是,该研究为旅游信息服务的数字化转型提供了可复制、可扩展的技术路径,能够帮助平台在激烈的市场竞争中快速实现差异化竞争优势。最后,本文通过与大型旅游平台合作开展A/B测试与在线实验,验证系统在真实环境中的有效性与可行性,为后续研究提供丰富的数据支持与实践经验。综上所述,本研究不仅具有重要的理论创新意义,还具备显著的应用价值和社会经济效益,为推动旅游行业向更智能、更精准、更人性化方向发展提供了有力支撑。

三、国内外研究现状

在全球范围内,旅游个性化推荐系统的研究已从早期的基于规则与协同过滤方法逐步演进至融合深度学习与多模态数据的现代框架。国外学者首先关注用户画像构建与兴趣挖掘,利用大规模社交网络数据和位置轨迹进行隐式偏好建模,取得了显著的准确率提升;随后,研究者将卷积神经网络与循环神经网络相结合,对景点图片、文字描述及用户评论进行联合嵌入,实现了跨模态推荐。近年来,检索增强生成(RAG)技术在自然语言处理领域的突破,为旅游推荐提供了新的思路,能够在检索阶段获取丰富背景知识,再通过生成模型实现个性化文本解释与动态更新。

国内研究起步稍晚,但发展迅速。早期工作多聚焦于基于协同过滤的推荐算法改进,尝试引入地理位置、时间窗口等旅游特定特征,提升了对短期行程的预测准确度。随后,随着移动互联网与大数据技术的普及,学者开始探索基于内容与上下文的混合模型,将景点属性、用户兴趣标签以及实时天气信息融合到推荐决策中。近年来,国内研究更注重多模态融合与可解释性,利用图像识别、语义分析和知识图谱构建景点知识库,并通过生成式模型为用户提供自然语言的推荐理由,显著提升了用户体验。

在技术方向上,国外研究更倾向于使用端到端深度学习框架,如Transformer与BERT等预训练模型,对旅游文本进行语义编码;同时,利用强化学习实现动态行程规划与实时调整。国内学者则在算法效率与可解释性方面取得突出进展,例如采用轻量化模型与稀疏矩阵技术降低计算成本,并通过可视化界面展示推荐依据,增强用户信任度。两者在数据来源、算法创新与应用场景上形成互补关系,为后续融合式研究奠定基础。

总体而言,国内外研究均已从单一特征模型向多模态、多源数据融合迈进,并在可解释性与实时性方面取得显著突破。然而,现有系统仍面临知识更新滞后、用户隐私保护以及跨平台数据共享等挑战。针对这些问题,未来研究需要进一步探索检索增强生成技术在旅游推荐中的应用,以实现更高效、动态且可解释的个性化服务。

四、预期达到目标及解决的关键问题

预期目标在于构建一套基于检索增强生成技术的旅游个性化推荐系统,能够实现对海量旅游资源与用户行为数据的高效检索、语义融合与动态生成,从而在准确率、召回率、覆盖度以及可解释性等多维指标上显著优于传统协同过滤与内容过滤方法;同时通过可视化交互界面为旅游服务提供者提供实时监控与模型微调能力,以支持业务迭代与持续优化;进一步目标是实现系统的可扩展性与跨平台兼容性,使其能够在不同移动端、网页端及智能硬件上无缝部署,并通过模块化设计降低维护成本。关键问题主要包括:一是检索阶段的召回效率与质量平衡,如何在海量数据中快速定位与用户兴趣高度相关的旅游资源;二是生成阶段的语义一致性与多模态融合,如何保证生成文本既符合事实又能体现个性化推荐理由;三是模型可解释性的实现,如何将复杂深度学习过程转化为用户易于理解的推荐说明;四是实时更新机制的设计,如何在旅游资源频繁变动的环境下保持知识库与检索索引的同步;五是用户隐私与数据安全保障,如何在收集与利用用户行为数据时遵循相关法规并保护个人信息;六是系统性能与资源消耗控制,尤其是在移动端部署时需要兼顾计算效率与电池寿命。针对上述关键问题,本研究将采用多模态嵌入、知识图谱检索、生成式模型微调以及增量学习等技术手段,并通过大规模实验与线上A/B测试进行验证,以期实现理论创新与实践价值的双重突破。

五、研究内容

本研究围绕基于检索增强生成技术的旅游个性化推荐系统展开,整体研究内容可分为数据预处理与特征工程、用户画像构建、检索模块设计、生成模块实现、知识图谱集成与推理、系统评估与在线实验六大部分。首先,在数据预处理与特征工程阶段,本文将采集来自旅游平台的多源数据,包括用户历史点击、预订记录、评论文本、景点图片及地理位置信息,并对原始数据进行清洗、去重与缺失值填补;随后利用文本分词与词向量化技术提取文本特征,采用卷积神经网络对景点图片进行特征提取,利用空间编码器将地理坐标映射为高维向量;通过上述步骤构建统一的多模态特征表示,为后续检索与生成提供基础。其次,在用户画像构建阶段,本文将基于隐式反馈与显式标签相结合的方式,采用矩阵分解与注意力机制相结合的混合模型对用户兴趣进行细粒度刻画;同时引入时间衰减因子,使得近期行为对画像更新具有更大权重,从而实现对用户偏好的动态捕捉。第三,检索模块设计将采用近似最近邻搜索算法(如FAISS)在高维特征空间中构建索引,结合倒排文件与布隆过滤器实现快速召回;为提升检索质量,本文将引入多级过滤策略,先通过粗粒度相似度筛选,再利用二次检索对候选集合进行精细排序,并根据用户画像与上下文信息动态调整阈值。第四,生成模块实现将以预训练Transformer模型为骨干,在旅游领域语料上进行微调;该模型将接收检索得到的候选景点特征向量、用户画像向量及上下文信息作为输入,输出自然语言的推荐理由与行程建议;为保证生成文本的真实性与可解释性,本文将结合知识图谱中的实体关系进行事实校验,并在生成过程中加入约束机制。第五,知识图谱集成与推理将构建以景点、主题、交通、季节等多维度为节点的旅游知识图谱;利用图嵌入技术将知识图谱信息映射至向量空间,并通过图注意力网络对相关实体进行聚合;在推荐过程中,系统将根据用户画像与检索结果动态查询知识图谱,补充缺失信息并提升生成文本的事实性。第六,系统评估与在线实验将采用离线指标(准确率、召回率、NDCG、覆盖度)与在线指标(点击率、停留时长、转化率)相结合的方式进行综合评估;在实验平台上实施A/B测试,对比传统协同过滤与内容过滤方法,验证RAG模型在多维指标上的优势;同时通过用户调研收集主观满意度与可解释性评价,为模型进一步迭代提供依据。综上所述,本研究通过多模态特征融合、检索增强生成技术与知识图谱推理相结合的系统架构,力求在旅游个性化推荐领域实现高精度、可解释且动态适应的推荐服务。

六、需求分析

用户需求方面,首先需要满足个性化体验的核心诉求,即系统能够根据用户的历史行为、兴趣标签、地理位置与时间偏好等多维度信息,精准推送符合其旅游偏好的目的地、线路与活动;其次,用户期望获取实时且动态更新的旅游信息,包括景点开放时间、门票价格、天气预报与交通状况等,以便及时调整行程规划;再次,鉴于旅游决策涉及多模态数据,用户希望系统能够整合文字描述、图片展示与语音交互等多种交互方式,为其提供全面且直观的参考;再者,随着信息安全意识的提升,用户对个人隐私与数据安全的关注日益增强,期望系统在收集与利用其行为数据时严格遵守相关法规,并提供透明的数据使用说明;最后,用户在不同终端(移动端、桌面端及智能硬件)上使用旅游服务时,希望能够获得一致且无缝的体验,系统需支持跨平台同步与离线缓存功能。

功能需求方面,系统首先需构建高效的数据采集与预处理管道,能够从旅游平台、社交媒体、地图服务及气象接口等多源渠道实时拉取原始数据,并进行清洗、去重与特征提取;随后,用户画像模块应支持基于隐式反馈与显式标签的混合建模,并实现时间衰减与兴趣演化机制,以动态更新用户偏好向量;检索引擎需采用近似最近邻技术与多级过滤策略,快速从海量景点特征库中召回与用户画像高度相关的候选集合,并支持上下文条件(如季节、预算)约束;生成模块基于检索增强生成框架,利用预训练Transformer模型在旅游领域语料上微调,接收检索结果与用户画像作为输入,输出自然语言的推荐理由与行程建议,同时通过知识图谱事实校验确保文本真实性;知识图谱集成层需构建景点、主题、交通、季节等多维度实体网络,并提供图嵌入与注意力聚合接口,以支持多模态信息补全与语义推理;推荐服务层需提供RESTful API,支持按需生成个性化推荐列表,并返回可解释的文本说明;前端交互界面需实现多模态展示(文字、图片、地图、语音),并提供可视化的推荐理由与可调节的过滤器,以提升用户体验;最后,系统监控与评估模块需实时收集离线指标(准确率、召回率、NDCG)与在线指标(点击率、停留时长、转化率),并支持A/B测试与模型在线更新,以持续优化推荐质量。

七、可行性分析

经济可行性方面,基于检索增强生成技术的旅游个性化推荐系统在初期投入主要集中于数据采集与模型训练。通过与现有旅游平台合作获取开放数据,能够显著降低数据采购成本;同时,利用开源深度学习框架与云计算资源,可按需扩展计算能力,避免一次性高昂的硬件投资。系统上线后,通过精准推荐提升用户转化率与停留时长,可直接转化为平台收入增长;此外,系统可为旅游供应商提供精准营销服务,形成多方共赢的商业模式。随着模型持续优化与业务规模扩大,运营成本将呈现规模经济效应,进一步提升盈利空间。

社会可行性方面,该系统满足了现代旅游者对个性化、即时信息与可解释性的迫切需求。通过提供多模态交互与实时更新的旅游资讯,可提升用户决策效率与满意度,进而促进旅游消费的增长。与此同时,系统在隐私保护方面采用差分隐私与数据脱敏技术,符合国内外数据安全法规,降低用户对个人信息泄露的担忧。系统还可通过智能推荐帮助游客合理规划行程,减少资源浪费与环境压力,对社会可持续发展具有积极意义。若与地方政府及旅游管理部门合作,可进一步实现旅游资源的优化配置与文化遗产的保护,为社会公共利益提供技术支持。

技术可行性方面,检索增强生成技术已在自然语言处理领域取得成熟应用,相关预训练模型与近似最近邻检索库均为开源且社区活跃,可直接复用与定制。多模态特征融合与知识图谱构建在学术界已形成完善的方法论,相关算法实现复杂度可通过分布式计算与模型压缩技术降低。系统整体架构采用微服务化设计,能够在容器化环境中实现弹性伸缩,满足高并发访问需求。针对移动端部署,可通过模型蒸馏与量化技术,将生成模型压缩至数十兆级别,兼顾推理速度与能耗。综上所述,从经济、社会与技术三方面均具备可行性,为项目的落地与推广奠定坚实基础。

八、功能分析

系统功能模块可分为数据采集与预处理、特征提取与多模态表示、用户画像构建、检索引擎、知识图谱集成、生成模块(RAG)、推荐服务接口、前端交互界面以及监控与评估、安全与隐私保障。数据采集与预处理模块负责从旅游平台、社交媒体、地图服务及气象接口等多源渠道实时拉取原始数据,并进行清洗、去重与缺失值填补,随后将文本信息进行分词与词向量化,图像信息通过卷积神经网络提取特征,地理位置信息采用空间编码器映射为高维向量,为后续模块提供统一的多模态特征。特征提取与多模态表示模块进一步将上述单一模态特征融合,利用注意力机制对不同模态权重进行动态调节,生成统一的景点与用户行为向量,确保检索与生成阶段能够充分利用语义信息。用户画像构建模块基于隐式反馈与显式标签相结合的混合模型,对用户历史点击、预订、评论等行为进行矩阵分解与注意力聚合,并引入时间衰减因子实现兴趣演化,输出高维用户兴趣向量。检索引擎模块采用近似最近邻搜索算法在高维特征空间构建索引,结合多级过滤策略先粗粒度筛选候选景点,再通过精细排序与阈值动态调整,快速返回与用户画像高度相关的候选集合。知识图谱集成模块构建以景点、主题、交通、季节等为节点的旅游知识图谱,利用图嵌入技术将实体映射至向量空间,并通过图注意力网络聚合相关实体,为生成模块提供事实依据与语义补全。生成模块(RAG)以预训练Transformer为骨干,在旅游领域语料上微调,接收检索得到的候选景点特征、用户画像向量及上下文信息,输出自然语言的推荐理由与行程建议,并通过知识图谱事实校验机制确保文本真实性与可解释性。推荐服务接口模块提供RESTful API,支持按需生成个性化推荐列表,并返回可解释的文本说明,供前端或第三方系统调用。前端交互界面模块实现多模态展示,包括文字、图片、地图与语音交互,并提供可视化的推荐理由与过滤器,提升用户体验。监控与评估模块实时收集离线指标(准确率、召回率、NDCG)与在线指标(点击率、停留时长、转化率),支持A/B测试与模型在线更新,以持续优化推荐质量。安全与隐私保障模块采用差分隐私、数据脱敏及访问控制技术,确保用户数据在采集、存储与处理过程中的安全合规。通过上述功能模块的协同工作,系统能够实现高效、精准且可解释的旅游个性化推荐服务。

九、数据库设计

字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注  
—|—|—|—|—|—  
user_id | 用户唯一标识 | 36 | CHAR(36) | PK |  
username | 用户名 | 50 | VARCHAR(50) |  |  
email | 邮箱地址 | 100 | VARCHAR(100) |  |  
password_hash | 密码哈希值 | 64 | CHAR(64) |  |  
created_at| 注册时间|19|DATETIME|  

user_profile_id|用户画像唯一标识|36|CHAR(36)|PK|  
user_id|所属用户ID|36|CHAR(36)|FK:Users.user_id|  
interest_vector | 兴趣向量(JSON存储) | 512 | TEXT |  |  
last_updated | 最近更新时间 |19|DATETIME|

user_interaction_id|用户交互唯一标识|36|CHAR(36)|PK|  
user_id|所属用户ID|36|CHAR(36)|FK:Users.user_id|  
destination_id|相关景点ID|36|CHAR(36)|FK:Destinations.destination_id|  
interaction_type | 交互类型(click, view, book) |20 |VARCHAR(20)| |  
interaction_time | 交互时间 |19|DATETIME|

destination_id | 景点唯一标识 |36|CHAR(36)|PK|  
name | 景点名称 |100|VARCHAR(100)|  
category | 景点类别(文化、自然、娱乐)|30|VARCHAR(30)|  
location_latitude | 纬度 |10|DECIMAL(9,6)|  
location_longitude | 经度 |10|DECIMAL(9,6)|  
description | 简短描述 |500|TEXT|

destination_image_id | 图片唯一标识 |36|CHAR(36)|PK|  
destination_id | 所属景点ID |36|CHAR(36)|FK:Destinations.destination_id|  
image_url | 图片URL |200|VARCHAR(200)|  
caption | 图片说明 |200|VARCHAR(200)|  

destination_info_id | 详细信息唯一标识 |36|CHAR(36)|PK|  
destination_id | 所属景点ID |36|CHAR(36)|FK:Destinations.destination_id|  
opening_hours | 开放时间 |100|VARCHAR(100)|  
ticket_price | 门票价格(元) |10|DECIMAL(10,2)|  
weather_advisory | 天气提示 |200|VARCHAR(200)|  

itinerary_id | 行程唯一标识 |36|CHAR(36)|PK|  
user_id | 归属用户ID |36|CHAR(36)|FK:Users.user_id|  
start_date | 开始日期 |10|DATE|  
end_date | 结束日期 |10|DATE|

itinerary_item_id | 行程项唯一标识 |36|CHAR(36)|PK|  
itinerary_id | 所属行程ID |36|CHAR(36)|FK:Itineraries.itinerary_id|  
destination_id | 目的地ID |36|CHAR(36)|FK:Destinations.destination_id|  
visit_time | 访问时间 |19|DATETIME|

recommendation_log_id | 推荐日志唯一标识 |36|CHAR(36)|PK|  
user_id | 用户ID |36|CHAR(36)|FK:Users.user_id|  
destination_id | 推荐景点ID |36|CHAR(36)|FK:Destinations.destination_id|  
score | 推荐分数 |5|FLOAT|  
generated_at | 生成时间 |19|DATETIME|

kg_entity_id | 知识图谱实体唯一标识 |36|CHAR(36)|PK|  
entity_name | 实体名称 |100|VARCHAR(100)|  
entity_type | 实体类型(景点、主题、交通)|30|VARCHAR(30)|

kg_relation_id | 知识图谱关系唯一标识 |36|CHAR(36)|PK|  
source_entity_id | 源实体ID |36|CHAR(36)|FK:KG_Entities.kg_entity_id|  
target_entity_id | 目标实体ID |36|CHAR(36)|FK:KG_Entities.kg_entity_id|  
relation_type | 关系类型(位于、属于、开放时间)|30|VARCHAR(30)|

以上表结构遵循第一范式与第二范式,避免了数据冗余与更新异常。所有主键均为UUID形式,外键通过显式约束保证参照完整性。

十、建表语句

CREATE DATABASE IF NOT EXISTS tourism_recommendation CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE tourism_recommendation;

— 用户基本信息表
CREATE TABLE IF NOT EXISTS users (
    user_id CHAR(36) NOT NULL,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL,
    password_hash CHAR(64) NOT NULL,
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (user_id),
    UNIQUE KEY uq_users_email (email),
    UNIQUE KEY uq_users_username (username)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

— 用户画像表
CREATE TABLE IF NOT EXISTS user_profiles (
    user_profile_id CHAR(36) NOT NULL,
    user_id CHAR(36) NOT NULL,
    interest_vector TEXT NOT NULL,
    last_updated DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (user_profile_id),
    UNIQUE KEY uq_user_profiles_user_id (user_id),
    CONSTRAINT fk_user_profiles_user_id FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

— 用户交互表
CREATE TABLE IF NOT EXISTS user_interactions (
    user_interaction_id CHAR(36) NOT NULL,
    user_id CHAR(36) NOT NULL,
    destination_id CHAR(36) NOT NULL,
    interaction_type VARCHAR(20) NOT NULL,
    interaction_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (user_interaction_id),
    INDEX idx_user_interactions_user_id (user_id),
    INDEX idx_user_interactions_destination_id (destination_id),
    CONSTRAINT fk_user_interactions_user_id FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE,
    CONSTRAINT fk_user_interactions_destination_id FOREIGN KEY (destination_id) REFERENCES destinations(destination_id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

— 景点基本信息表
CREATE TABLE IF NOT EXISTS destinations (
    destination_id CHAR(36) NOT NULL,
    name VARCHAR(100) NOT NULL,
    category VARCHAR(30) NOT NULL,
    location_latitude DECIMAL(9,6) NOT NULL,
    location_longitude DECIMAL(9,6) NOT NULL,
    description TEXT,
    PRIMARY KEY (destination_id),
    INDEX idx_destinations_name (name),
    INDEX idx_destinations_category (category)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

— 景点图片表
CREATE TABLE IF NOT EXISTS destination_images (
    destination_image_id CHAR(36) NOT NULL,
    destination_id CHAR(36) NOT NULL,
    image_url VARCHAR(200) NOT NULL,
    caption VARCHAR(200),
    PRIMARY KEY (destination_image_id),
    INDEX idx_destination_images_destination_id (destination_id),
    CONSTRAINT fk_destination_images_destination_id FOREIGN KEY (destination_id) REFERENCES destinations(destination_id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

— 景点详细信息表
CREATE TABLE IF NOT EXISTS destination_infos (
    destination_info_id CHAR(36) NOT NULL,
    destination_id CHAR(36) NOT NULL,
    opening_hours VARCHAR(100),
    ticket_price DECIMAL(10,2),
    weather_advisory VARCHAR(200),
    PRIMARY KEY (destination_info_id),
    INDEX idx_destination_infos_destination_id (destination_id),
    CONSTRAINT fk_destination_infos_destination_id FOREIGN KEY (destination_id) REFERENCES destinations(destination_id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

— 行程表
CREATE TABLE IF NOT EXISTS itineraries (
    itinerary_id CHAR(36) NOT NULL,
    user_id CHAR(36) NOT NULL,
    start_date DATE NOT NULL,
    end_date DATE NOT NULL,
    PRIMARY KEY (itinerary_id),
    INDEX idx_itineraries_user_id (user_id),
    CONSTRAINT fk_itineraries_user_id FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

— 行程项表
CREATE TABLE IF NOT EXISTS itinerary_items (
    itinerary_item_id CHAR(36) NOT NULL,
    itinerary_id CHAR(36) NOT NULL,
    destination_id CHAR(36) NOT NULL,
    visit_time DATETIME NOT NULL,
    PRIMARY KEY (itinerary_item_id),
    INDEX idx_itinerary_items_itinerary_id (itinerary_id),
    INDEX idx_itinerary_items_destination_id (destination_id),
    CONSTRAINT fk_itinerary_items_itinerary_id FOREIGN KEY (itinerary_id) REFERENCES itineraries(itinerary_id) ON DELETE CASCADE ON UPDATE CASCADE,
    CONSTRAINT fk_itinerary_items_destination_id FOREIGN KEY (destination_id) REFERENCES destinations(destination_id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

— 推荐日志表
CREATE TABLE IF NOT EXISTS recommendation_logs (
    recommendation_log_id CHAR(36) NOT NULL,
    user_id CHAR(36) NOT NULL,
    destination_id CHAR(36) NOT NULL,
    score FLOAT NOT NULL,
    generated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (recommendation_log_id),
    INDEX idx_recommendation_logs_user_id (user_id),
    INDEX idx_recommendation_logs_destination_id (destination_id),
    CONSTRAINT fk_recommendation_logs_user_id FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE,
    CONSTRAINT fk_recommendation_logs_destination_id FOREIGN KEY (destination_id) REFERENCES destinations(destination_id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

— 知识图谱实体表
CREATE TABLE IF NOT EXISTS kg_entities (
    kg_entity_id CHAR(36) NOT NULL,
    entity_name VARCHAR(100) NOT NULL,
    entity_type VARCHAR(30) NOT NULL,
    PRIMARY KEY (kg_entity_id),
    INDEX idx_kg_entities_entity_name (entity_name),
    INDEX idx_kg_entities_entity_type (entity_type)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

— 知识图谱关系表
CREATE TABLE IF NOT EXISTS kg_relations (
    kg_relation_id CHAR(36) NOT NULL,
    source_entity_id CHAR(36) NOT NULL,
    target_entity_id CHAR(36) NOT NULL,
    relation_type VARCHAR(30) NOT NULL,
    PRIMARY KEY (kg_relation_id),
    INDEX idx_kg_relations_source_entity_id (source_entity_id),
    INDEX idx_kg_relations_target_entity_id (target_entity_id),
    CONSTRAINT fk_kg_relations_source_entity_id FOREIGN KEY (source_entity_id) REFERENCES kg_entities(kg_entity_id) ON DELETE CASCADE ON UPDATE CASCADE,
    CONSTRAINT fk_kg_relations_target_entity_id FOREIGN KEY (target_entity_id) REFERENCES kg_entities(kg_entity_id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

文章下方名片联系我即可~大家点赞、收藏、关注、评论啦 、查看下方👇🏻获取联系方式👇🏻

赞(0)
未经允许不得转载:171主机测评 » 基于RAG的旅游个性化推荐系统设计计算机毕业设计(源码+lw+部署文档+讲解等)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址