当前位置: 首页 > news >正文

JAVA-报表模糊搜索询易实现

背景:
一般文件报表经常会需要搜各个表头对应内容,如果支持全部类型切换搜索,操作起来就不够便捷。而且这个报表是测试自己用的,准确性可以不用太要求,所以更想要那中输入关键字命中任意表记录内容的模糊匹配功能。

方法一:解析搜索类型和关键字,加入到查询条件。
方法二:遍历搜索结果,解析成json或key-value,逐一匹配,符合则加入搜索结果。
方法三:通过stream API直接过滤搜索结果,符合的加入搜索结果。相当于搜索结果全文匹配。

方法一如果报表查表很单一的话就非常适用,但如果是不同条件查不同表组合那就会非常麻烦,而且查询条件也需要各种拼奏。
后两者显然方法三更便捷。

具体实现:

public JSONObject getReportList(String env, Map<String, Object> request){string[]keyWords = request. containskey("keyword") ? request.get("keyWord"). tostring().split(" +") : null;   // 支持空格符分隔关键字 List<Map<string,Object>> list = 分页后表搜索结果List<Map<String,Object>>listcount=不分页下的搜索总数 if (keywords != null && keybords.length >θ){int preCount = request.containskey("count") ? Integer .parseInt(request.get("count").toString()) : 0;// List<Map<String,object>> list2 = null;for (String keyWord : keywords){System.out,print1n("keyWord = " + keyWord);list = 1ist.stream().fi1ter(s -> s.tostring().contains(keyword)) .collect(Collectors.toList()); }System.out.println("list2 =- + list); int count2 = list.size()+ preCount;System.out.println("count2=" + count2);//不足一页就补数if (count2<pageSize 8& currentPage * pageSize < count){request.put("currentPage",currentPage + 1);JSONObject addList = getReportList(env,request); if (addlist != nul1){list.addAll((Collection<?extends Map<String,Object>>) addList.get("item"));}request.put("list",list); }jsonObject.put("iten", 1ist); jsonObject.put("total", count2);}else {jsonObject,put("iten",list); jsonObject,put("total", count); }return json0bject;
}

这种方法的小坑:
1、翻页会有问题。可能因为补数导致制页后的数据重复出现,但如果搜索结果少于一页就没有差别。
2、如果关键字不够明确会导致匹配到很多无效数据。如关键字关键字=1
3、多个关键字可能导致性能略低。
不过对于比如指定日期,指定类目这样子的关键字,已经足够精确和高效了。|

http://www.lryc.cn/news/398899.html

相关文章:

  • 牛客 7.13 月赛(留 C逆元)
  • FPGA之术语
  • WPF透明置顶窗口wine适配穿透问题解决
  • 浅析Kafka Streams中KTable.aggregate()方法的使用
  • java word转pdf、word中关键字位置插入图片 工具类
  • jail内部ubuntu apt升级失败问题解决
  • 迎接AI新时代:GPT-5的技术飞跃与未来展望
  • Snap Video:用于文本到视频合成的扩展时空变换器
  • 实验8 视图创建与管理实验
  • C++ 开源库
  • LabVIEW滤波器性能研究
  • 『C++成长记』vector模拟实现
  • 【Mac】Charles for Mac(HTTP协议抓包工具)及同类型软件介绍
  • LVS集群及其它的NAT模式
  • 【RNN练习】天气预测
  • prompt第四讲-fewshot
  • StarRocks分布式元数据源码解析
  • 阅读笔记——《Fuzz4All: Universal Fuzzing with Large Language Models》
  • 【C++】使用gtest做单元测试框架写单元测试
  • Java类与对象
  • xlwings 链接到 指定sheet 从别的 excel 复制 sheet 到指定 sheet
  • 风光摄影:相机设置和镜头选择
  • python制作甘特图的基本知识(附Demo)
  • javascript设计模式总结
  • gpt-4o看图说话-根据图片回答问题
  • 【MySQL】7.MySQL 的内置函数
  • 爬虫:Sentry-Span参数逆向
  • 音视频入门基础:H.264专题(12)——FFmpeg源码中通过SPS属性计算视频分辨率的实现
  • 基于颜色模型和边缘检测的火焰识别FPGA实现,包含testbench和matlab验证程序
  • golang json反序列化科学计数法的坑