解决的问题:

  1. 因为select下拉选项太多需要做搜索建议
  2. 提高页面加载速度
  3. 实现一次之后 后续的接入只需修改js和枚举

主要思路:

  1. 使用动态sql 拼装需要的参数
  2. 使用枚举来动态的加载表
  3. 在页面中传入需要的枚举值 和 需要like的字段

引入插件magicsuggest

<script src="${pageContext.request.contextPath}/static/plugin/magicsuggest/magicsuggest-min.js"></script>
<link rel="stylesheet" href="${pageContext.request.contextPath}/static/plugin/magicsuggest/magicsuggest-min.css" />
复制代码

在页面中加上相应的区域 可以为input或者div

<div id="mssupplier"></div>
复制代码

在js中对上面的id进行绑定magicsuggest事件

$(function() {var mssupplier = $('#mssupplier').magicSuggest({allowFreeEntries: false,autoSelect: true,placeholder:'请选择供应商',data: '****.html',  //数据请求地址dataUrlParams: {    //请求带的参数category: 2,    //对应的下面的枚举值columns: ['name', 'supplierNo'] //请求的数据库字段(需要like的)},maxSelection: 1,cls: 'col-xs-2',infoMsgCls: 'hide'});$(mssupplier).on('selectionchange', function(e,m){reloadGrid(); //改变之后需要所做的事情});
}
复制代码

设置枚举类对应请求参数

/*** @author lemon* @date 2017-12-20 18:24* @desc 搜索建议插件枚举*/
public enum SuggestCategoryEnum {SHOP(1, "table1", true),SUPPLIER(2, "table2", true),USER(3, "table3", false),PRODUCT(4, "table4", true);private final int category; //分类private final String tableName; //表名private final boolean isMall;   //其他参数(这个为作者的业务需求)SuggestCategoryEnum(int category, String tableName, boolean isMall) {this.category = category;this.tableName = tableName;this.isMall = isMall;}public int getCategory() {return category;}public String getTableName() {return tableName;}public boolean isMall() {return isMall;}public static SuggestCategoryEnum getEnum(int category) {for (SuggestCategoryEnum anEnum : values()) {if (anEnum.getCategory() == category) {return anEnum;}}throw new RuntimeException("not find category:" + category);}
}
复制代码

请求后台sql mybatis

<select id="listSuggest" resultType="cc.laowantong.entity.suggest.Suggest" parameterType="cc.laowantong.entity.suggest.SuggestParam">select id,concat<foreach item="column" index="index" collection="matchColumns"open="(" separator="," close=")">${column}</foreach> as namefrom ${tableName}<trim prefix="WHERE" prefixOverrides="AND|OR"><foreach item="column" index="index" collection="matchColumns"open="" separator="or" close="">${column} like "%"#{keywords}"%"</foreach></trim>limit #{limit}
</select>
复制代码

参考资料:http://nicolasbize.com/magicsuggest/doc.html

未经作者lemon允许 请勿转载,谢谢 :)

转载于:https://juejin.im/post/5a3bb666518825455f2f7679

搜索suggest实现 动态的查询建议相关推荐

  1. [ElasticSearch]Suggest查询建议(自动补全纠错)

    1) 概念 查询建议,能够为用户提供良好的使用体验.主要包括:     拼写检查(纠错)     自动建议查询词(自动补全) 2) Suggest种类及参数 2.1 Term Suggester Te ...

  2. [Java]-Elastic中suggest查询建议

    文章目录 查询建议API 单个建议查询词 多个建议查询词 Suggester Term suggester 参数 phrase suggester completion suggester 搜索框实现 ...

  3. Elasticsearch搜索引擎第十一篇-Suggest查询建议

    文章目录 查询建议是什么 ES查询建议API Suggester介绍 term suggester phrase suggester completion suggester 自动补全 查询建议是什么 ...

  4. elasticsearch系列五:搜索详解(查询建议介绍、Suggester 介绍)

    一.查询建议介绍 1. 查询建议是什么? 查询建议,为用户提供良好的使用体验.主要包括: 拼写检查: 自动建议查询词(自动补全) 拼写检查如图: 自动建议查询词(自动补全): 2. ES中查询建议的A ...

  5. java实现sug,Elasticsearch搜索Suggest功能优化

    搜索Suggest需要优化问题: 怎么优化Suggest词库,提升Suggest词准确率 怎么提高响应速度 suggest词库获取 冷启动可以从内容中提取热词数据来解决,或者人工设置 挖掘搜索日志: ...

  6. elasticsearch5.x:查询建议介绍、Suggester 介绍以及Java-api实现

    elasticsearch5.x:查询建议介绍.Suggester 介绍 参考:http://www.cnblogs.com/leeSmall/p/9206646.html 参考(重点):https: ...

  7. 【Elasticsearch】十九种Elasticsearch字符串搜索方式终极介绍 各种 查询

    本文为博主九师兄(QQ:541711153 欢迎来探讨技术)原创文章,未经允许博主不允许转载. 可以加我问问题,免费解答,有问题可以先私聊我,本人每天都在线,会帮助需要的人. 但是本博主因为某些原因, ...

  8. ElasticSearch 文档检索、查询建议、数据聚合

    目录 结构化搜索 term 单词匹配(单个值) terms 单词匹配(多个值) range 范围查询 exists 存在查询.miss 缺失查询 ids id匹配 prefix 前缀匹配 wildca ...

  9. JPA 2.0 中的动态类型安全查询

    如何通过 Criteria API 构建动态查询并减少运行时失败 如果编译器能够对查询执行语法正确性检查,那么对于 Java 对象而言该查询就是类型安全的.Java™Persistence API ( ...

最新文章

  1. 七夕福利 | 3D视觉从入门到精通系统学习教程
  2. c++ 回调函数_Java中的回调机制,这篇给你整的明明白白的
  3. 【Android 逆向】应用数据目录 ( files 数据目录 | lib 应用自带 so 动态库目录 | databases sqlite3 数据库目录 | cache 缓存目录 )
  4. Linux 下系统调用的三种方法
  5. artTemplate使用
  6. linux指令笔试,Linux笔试常用命令
  7. 一种c#深拷贝方式完胜java深拷贝(实现上的对比)
  8. WF 创建 SQL 持久性数据库
  9. html怎么设置子目录,如何让主域名指向public_html下的子目录
  10. C语言 函数指针 - C语言零基础入门教程
  11. Excel的导入与导出
  12. Arduino抢答器
  13. my log4crc
  14. 置换检验 配对秩和检验
  15. 固定效应模型VS随机效应模型
  16. 开源自动化运维平台Spug
  17. Latex在PPT(beamer格式)中的页脚,插入reference (footnote), 分栏与不分栏两种情况, 以及如何调节footnote的字体大小
  18. 设备驱动程序是什么?为什么要有设备驱动程序?用户进程怎样使用驱动程序?
  19. Lua Single--Method 的对象实现方法(面向对象程序设计)
  20. centos7.4下Jira6环境部署及破解操作记录(完整版)

热门文章

  1. 3306 端口 要不要修改_zabbix 自动发现并监控所有端口
  2. Python读取.set文件和.locs文件
  3. 3d卷积神经网络_HSNets:使用卷积神经网络从2D轮廓预测3D人体模型
  4. 蟑螂背上芯片板子,组队去救人类
  5. 贝叶斯神书《统计反思》推出第二版,视频课程同步上线,作者亲自在线答疑...
  6. 这款AI语音模型让派大星承认自己是钢铁侠,造假小扎对口型,火到挤爆服务器|在线可玩...
  7. NeurIPS 2021论文接收结果统计:Oral级论文不足3%,图神经网络火到进前三
  8. 开始报名丨CCF C³-05@亚马逊云科技:未来云计算之旅
  9. 小米副总裁崔宝秋:智能手机是今天AI技术最大的平台,AIoT又让AI无处不在 | MEET 2021...
  10. 谷歌AI发布“会动的”3D物体数据集,附带标记边界框、相机位姿、稀疏点云,网友:快给我的AR模型用上...