跟着AI学习C#之项目实践Day6

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)

你可能感兴趣的:(C#,学习,c#,solr)