📅 Day 6:实现文章搜索功能(Search System)

✅ 今日目标:

  • 实现按 标题、内容、作者 搜索文章
  • 使用 LINQ 构建动态查询条件
  • 添加搜索框 UI 界面
  • 可选:使用全文搜索优化(如 SQL Server 全文索引)
  • 提交 Git 版本记录进度

🔍 一、添加搜索功能逻辑

我们将在文章列表页(Index.cshtml)中添加一个搜索框,并根据用户输入的关键词动态过滤文章。

✅ 修改 Pages/Posts/Index.cshtml.cs

添加搜索字段和逻辑:

[BindProperty(SupportsGet = true)]
public string? SearchTerm { get; set; }public async Task<IActionResult> OnGetAsync()
{var query = _context.Posts.Include(p => p.Category).Include(p => p.PostTags).ThenInclude(t => t.Tag).AsQueryable();if (CategoryId.HasValue){query = query.Where(p => p.CategoryId == CategoryId.Value);}if (!string.IsNullOrEmpty(SearchTerm)){query = query.Where(p =>p.Title.Contains(SearchTerm) ||p.Content.Contains(SearchTerm) ||p.AuthorName.Contains(SearchTerm));}Posts = await query.ToListAsync();Categories = await _context.Categories.ToListAsync();return Page();
}

🖋️ 二、在页面上添加搜索框

✅ 修改 Pages/Posts/Index.cshtml

在页面顶部添加搜索框:

<form method="get"><div class="input-group mb-3"><input type="text" class="form-control" placeholder="搜索文章..." asp-for="SearchTerm" /><button class="btn btn-outline-primary" type="submit">搜索</button></div>
</form>

你也可以将它放在导航栏或侧边栏中,方便用户随时搜索。


🧪 三、测试搜索功能

  1. 运行项目
  2. 在搜索框中输入关键词(例如“C#”、“入门”、“张三”等)
  3. 验证是否能正确匹配标题、内容和作者

⚙️ 四、可选:使用 SQL Server 全文搜索优化(进阶)

如果你希望提升搜索性能,可以考虑启用 SQL Server 的全文搜索功能。

✅ 步骤简要如下:

  1. 在 SQL Server 中启用全文搜索:

    EXEC sp_fulltext_database 'enable';
    
  2. 创建全文索引:

    CREATE FULLTEXT INDEX ON Posts(Title, Content)
    KEY INDEX PK_Posts_Id
    ON BlogCatalog;
    
  3. 修改 LINQ 查询为使用 EF.Functions.FreeSql 或直接调用 SQL 函数(需使用原生 SQL 查询)。

⚠️ 注意:这属于高级用法,适用于数据量较大时。对于小型博客系统,简单的 Contains() 已经足够。


📦 五、提交 Git 版本

git add .
git commit -m "Day6: Added search functionality by title, content and author"

📝 今日总结

今天你完成了:

✅ 实现了按标题、内容、作者搜索文章的功能
✅ 使用 LINQ 构建动态查询逻辑
✅ 添加了搜索框 UI 界面
✅ 可选学习了 SQL Server 全文搜索配置
✅ 提交版本控制记录


📆 明日计划(Day7)

我们将进入 测试与优化阶段

  • 编写单元测试(xUnit / Moq)
  • 测试 PostService 逻辑
  • 添加缓存机制(MemoryCache / Redis)
  • 性能分析工具使用(Application Insights)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/89009.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/89009.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/89009.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Learning to Prompt for Continual Learning

Abstract 持续学习背后的主流范式是使模型参数适应非平稳数据分布&#xff0c;其中灾难性遗忘是核心挑战。典型方法依赖于排练缓冲区或测试时已知的任务标识来检索已学知识并解决遗忘问题&#xff0c;而这项工作提出了一种持续学习的新范式&#xff0c;旨在训练一个更简洁的记…

【论文阅读笔记】知网SCI——基于主成分分析的空间外差干涉数据校正研究

论文词条选择 —— 知网 【SCI】【数据分析】 题目&#xff1a;基于主成分分析的空间外差干涉数据校正研究 原文摘要&#xff1a; 空间外差光谱技术(SHS)是一种新型的高光谱遥感探测技术&#xff0c;被广泛应用于大气观测、天文遥感、物质识别等领域。通过空间外差光谱仪获取…

如何用VS Code、Sublime Text开发51单片机

文章目录 一、前置工作二、VS Code2.1 Code Runner配置2.2 编译快捷键 三、Sublime Text3.1 Build System创建3.2 编译快捷键 四、使用STC-ISP下载代码到单片机 使用VS Code开发51单片机的好处自不必多说&#xff0c;直接进入正题。本博客的目标是让你能够使用VS Code或者Subli…

信息抽取数据集全景分析:分类体系、技术演进与挑战_DEEPSEEK

信息抽取数据集全景分析&#xff1a;分类体系、技术演进与挑战 摘要 信息抽取&#xff08;IE&#xff09;作为自然语言处理的核心任务&#xff0c;是构建知识图谱、支持智能问答等应用的基础。近年来&#xff0c;随着深度学习技术的发展和大规模预训练模型的兴起&#xff0c;…

利用 Python 脚本批量查找并删除指定 IP 的 AWS Lightsail 实例

在 AWS Lightsail 管理中&#xff0c;随着实例数量的增多&#xff0c;我们常常会遇到这样一个问题&#xff1a; “我知道某个公网 IP 地址&#xff0c;但不知道它关联的是哪台实例。” 或者&#xff1a; “我有一批老旧的实例只知道 IP&#xff0c;需要一键定位并选择删除。…

CompletableFuture 深度解析

本文将探讨 Java 8 引入的 CompletableFuture&#xff0c;一个在异步编程中实现非阻塞、可组合操作的强大工具。我们将从 CompletableFuture 的基本概念、与传统 Future 的区别、核心 API 用法&#xff0c;到复杂的链式调用、组合操作以及异常处理进行全面解析&#xff0c;并通…

给自己网站增加一个免费的AI助手,纯HTML

助手效果图 看完这篇文章&#xff0c;你将免费拥有你自己的Ai助手&#xff0c;全程干货&#xff0c;先到先得 获取免费的AI大模型接口 访问这个地址 生成key https://openrouter.ai/mistralai/mistral-small-3.2-24b-instruct:free/api 或者调用其他的免费大模型&#xff0c;这…

ASProxy64.dll导致jetbrains家的IDE都无法打开。

在Windows11中,无法打开jetbrains的IDE的软件,经过排查,发现与ASProxy64.dll有关。 E:\idea\IntelliJ IDEA 2024.1.7\bin>idea.bat CompileCommand: exclude com/intellij/openapi/vfs/impl/FilePartNodeRoot.trieDescend bool exclude = true # # A fatal error has bee…

springboot+Vue逍遥大药房管理系统

概述 基于springbootVue开发的逍遥大药房管理系统。该系统功能完善&#xff0c;既包含强大的后台管理模块&#xff0c;又具备用户友好的前台展示界面。 主要内容 一、后台管理系统功能 ​​核心管理模块​​&#xff1a; 用户管理&#xff1a;管理员与普通用户权限分级药品分…

探索阿里云智能媒体管理IMM:解锁媒体处理新境界

一、引言&#xff1a;开启智能媒体管理新时代 在数字化浪潮的席卷下&#xff0c;媒体行业正经历着前所未有的变革。从传统媒体到新媒体的转型&#xff0c;从内容生产到传播分发&#xff0c;每一个环节都在寻求更高效、更智能的解决方案。而云计算&#xff0c;作为推动这一变革…

[附源码+数据库+毕业论文]基于Spring+MyBatis+MySQL+Maven+jsp实现的新生报道管理系统,推荐!

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了新生报道管理系统的开发全过程。通过分析高校新生入学报到信息管理的不足&#xff0c;创建了一个计算机管理高校新生入学报到信息的方案。文章介绍了新生报道管…

给定一个整型矩阵map,求最大的矩形区域为1的数量

题目: 给定一个整型矩阵map,其中的值只有0和1两种,求其中全是1的 所有矩形区域中,最大的矩形区域为1的数量。 例如: 1 1 1 0 其中,最大的矩形区域有3个1,所以返回3。 再如: 1 0 1 1 1 1 1 1 1 1 1 0 其中,最大的矩形区域有6个1,所以返回6。 解题思…

第8章-财务数据

get_fund # 查看股票代码000001.XSHE在2022年9月1日的总市值 q query( valuation ).filter( valuation.code 000001.XSHE ) df get_fundamentals(q, 2022-09-01) print(df[market_cap][0]) # 获取第一行的market_cap值 这段代码看起来是用于查询股票在特定日期的总…

SQL关键字三分钟入门:ROW_NUMBER() —— 窗口函数为每一行编号

在进行数据分析时&#xff0c;我们常常需要为查询结果集中的每条记录生成一个唯一的序号或行号。例如&#xff1a; 为每位员工按照入职时间排序并编号&#xff1b;按照订单金额对订单进行排序&#xff0c;并给每个订单分配一个顺序编号&#xff1b;在分组数据内为每条记录编号…

微信小程序如何实现通过邮箱验证修改密码功能

基于腾讯云开发&#xff08;Tencent Cloud Base&#xff09;实现小程序邮箱验证找回密码功能的完整逻辑说明及关键代码实现。结合安全性和开发效率&#xff0c;方案采用 ​​云函数 小程序前端​​ 的架构&#xff0c;使用 ​​Nodemailer​​ 发送邮件。Nodemailer 是一个专为…

C# VB.NET中Tuple轻量级数据结构和固定长度数组

C# VB.NET取字符串中全角字符数量和半角字符数量-CSDN博客 https://blog.csdn.net/xiaoyao961/article/details/148871910 在VB.NET中&#xff0c;使用Tuple和固定长度数组在性能上有细微差异&#xff0c;以下是详细分析&#xff1a; 性能对比测试 通过测试 100 万次调用&am…

建筑物年代预测与空间异质性分析解决方案

建筑物年代预测与空间异质性分析解决方案 1. 问题分析与创新点设计 核心任务:预测建筑物建造年代,并分析空间异质性对预测的影响 创新点设计: 空间权重矩阵集成:构建空间邻接矩阵量化地理邻近效应多尺度特征提取:融合建筑物微观特征与街区宏观特征异质性分区建模:基于…

FOUPK3system5XOS

Foupk3systemX5OS系统19.60内测版&#xff08;X9&#xff09;2023年4月16日正式发布 1.0Foupk3systemX5OS系统19.60&#xff08;X9&#xff09;2024年10月6日发布 Foupk3systemX5OS系统19.60增强版&#xff08;X9X5&#xff09;2024年10月6日发布Foupk3systemX5OS系统19.60正…

随机生成的乱码域名”常由**域名生成算法(DGA)** 产生

“随机生成的乱码域名”常由**域名生成算法&#xff08;DGA&#xff09;** 产生&#xff0c;是网络攻击&#xff08;尤其是僵尸网络、恶意软件控制场景 &#xff09;中躲避检测的手段&#xff0c;以下是关键解析&#xff1a; ### 一、本质与产生逻辑 乱码域名是攻击者利用 **DG…

Solidity学习 - 继承

文章目录 前言继承的基本概念继承的基本用法单继承实现函数重写&#xff08;overriding&#xff09; 构造函数的继承处理多重继承抽象合约 前言 继承是面向对象编程中的核心概念之一&#xff0c;Solidity作为一种面向对象的智能合约语言&#xff0c;同样支持继承机制。通过继承…