首页 > Java > java教程 > 正文

Java初级项目如何添加搜索功能_模糊匹配与关键字检索逻辑

P粉602998670
发布: 2025-11-19 10:54:10
原创
215人浏览过
实现Java初级项目搜索功能需采用模糊匹配与关键字检索,适用于商品、用户、文章等场景;2. 模糊匹配通过String.contains()判断字段包含关系,可转小写实现不区分大小写;3. 多字段检索将姓名、手机、邮箱等拼接后统一匹配,实现简单但可能误匹配;4. 分词检索支持多关键词输入,拆分后逐个匹配,提升准确性;5. Web项目中通过Servlet获取前端q参数接收搜索词,结合JSP展示结果;6. 无需引入Elasticsearch或数据库全文索引,使用Java集合与字符串处理即可满足需求。

java初级项目如何添加搜索功能_模糊匹配与关键字检索逻辑

在Java初级项目中添加搜索功能,核心是实现模糊匹配关键字检索。这类功能常见于商品列表、用户管理、文章查询等场景。实现方式不需要复杂框架,使用基础的Java集合和字符串处理就能完成。

1. 模糊匹配:基于字符串包含关系

最简单的模糊匹配是判断目标字段是否包含用户输入的关键词。比如搜索“张”,能查出“张三”“小张”等记录。

示例代码:

public List<User> searchUsersByName(List<User> userList, String keyword) {
    List<User> result = new ArrayList<>();
    for (User user : userList) {
        if (user.getName().contains(keyword)) {
            result.add(user);
        }
    }
    return result;
}
登录后复制

说明:使用String.contains()方法进行子串匹配,不区分大小写时可先统一转为小写:

立即学习Java免费学习笔记(深入)”;

if (user.getName().toLowerCase().contains(keyword.toLowerCase())) {
    result.add(user);
}
登录后复制

2. 多字段关键字检索:支持多个属性搜索

实际需求中,用户可能希望同时在姓名、手机号、邮箱等字段中查找。可以将多个字段拼接后进行匹配。

示例:

public List<User> searchByKeyword(List<User> userList, String keyword) {
    List<User> result = new ArrayList<>();
    String lowerKeyword = keyword.toLowerCase();

    for (User user : userList) {
        String combined = user.getName() + user.getPhone() + user.getEmail();
        if (combined.toLowerCase().contains(lowerKeyword)) {
            result.add(user);
        }
    }
    return result;
}
登录后复制

优点:实现简单,适合数据量小的场景;缺点:可能误匹配(如手机号和邮箱连在一起出现关键词)。

SEEK.ai
SEEK.ai

AI驱动的智能数据解决方案,询问您的任何数据并立即获得答案

SEEK.ai 100
查看详情 SEEK.ai

3. 分词检索:提升搜索准确性

若用户输入多个词(如“北京 张”),希望同时匹配“城市=北京”且“姓名含张”,可对关键词分词后逐一判断。

示例逻辑:

public List<User> searchByMultipleKeywords(List<User> userList, String keywordInput) {
    List<User> result = new ArrayList<>();
    String[] keywords = keywordInput.trim().split("\s+"); // 按空格拆分

    for (User user : userList) {
        boolean matchAll = true;
        for (String kw : keywords) {
            String lowerKw = kw.toLowerCase();
            if (!user.getName().toLowerCase().contains(lowerKw) &&
                !user.getCity().toLowerCase().contains(lowerKw)) {
                matchAll = false;
                break;
            }
        }
        if (matchAll) {
            result.add(user);
        }
    }
    return result;
}
登录后复制

说明:每个关键词都必须在任一字段中出现才算匹配,可根据业务调整匹配规则。

4. 与前端结合:接收搜索请求

如果是Web项目(如使用Servlet),可通过HTTP参数获取关键词:

protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
    String keyword = req.getParameter("q");
    if (keyword == null) keyword = "";
    
    List<User> allUsers = userService.getAllUsers();
    List<User> results = searchByKeyword(allUsers, keyword);
    
    req.setAttribute("users", results);
    req.getRequestDispatcher("user-list.jsp").forward(req, resp);
}
登录后复制

前端HTML搜索框:

<form method="get" action="search">
    <input type="text" name="q" placeholder="输入姓名或城市...">
    <button type="submit">搜索</button>
</form>
登录后复制

基本上就这些。对于初级项目,不需要引入Elasticsearch或数据库全文索引,用Java原生逻辑处理即可满足需求。关键是根据实际数据结构设计合理的匹配范围和规则,避免漏查或多查。

以上就是Java初级项目如何添加搜索功能_模糊匹配与关键字检索逻辑的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号