搜索suggest实现 动态的查询建议
解决的问题:
- 因为select下拉选项太多需要做搜索建议
- 提高页面加载速度
- 实现一次之后 后续的接入只需修改js和枚举
主要思路:
- 使用动态sql 拼装需要的参数
- 使用枚举来动态的加载表
- 在页面中传入需要的枚举值 和 需要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实现 动态的查询建议相关推荐
- [ElasticSearch]Suggest查询建议(自动补全纠错)
1) 概念 查询建议,能够为用户提供良好的使用体验.主要包括: 拼写检查(纠错) 自动建议查询词(自动补全) 2) Suggest种类及参数 2.1 Term Suggester Te ...
- [Java]-Elastic中suggest查询建议
文章目录 查询建议API 单个建议查询词 多个建议查询词 Suggester Term suggester 参数 phrase suggester completion suggester 搜索框实现 ...
- Elasticsearch搜索引擎第十一篇-Suggest查询建议
文章目录 查询建议是什么 ES查询建议API Suggester介绍 term suggester phrase suggester completion suggester 自动补全 查询建议是什么 ...
- elasticsearch系列五:搜索详解(查询建议介绍、Suggester 介绍)
一.查询建议介绍 1. 查询建议是什么? 查询建议,为用户提供良好的使用体验.主要包括: 拼写检查: 自动建议查询词(自动补全) 拼写检查如图: 自动建议查询词(自动补全): 2. ES中查询建议的A ...
- java实现sug,Elasticsearch搜索Suggest功能优化
搜索Suggest需要优化问题: 怎么优化Suggest词库,提升Suggest词准确率 怎么提高响应速度 suggest词库获取 冷启动可以从内容中提取热词数据来解决,或者人工设置 挖掘搜索日志: ...
- elasticsearch5.x:查询建议介绍、Suggester 介绍以及Java-api实现
elasticsearch5.x:查询建议介绍.Suggester 介绍 参考:http://www.cnblogs.com/leeSmall/p/9206646.html 参考(重点):https: ...
- 【Elasticsearch】十九种Elasticsearch字符串搜索方式终极介绍 各种 查询
本文为博主九师兄(QQ:541711153 欢迎来探讨技术)原创文章,未经允许博主不允许转载. 可以加我问问题,免费解答,有问题可以先私聊我,本人每天都在线,会帮助需要的人. 但是本博主因为某些原因, ...
- ElasticSearch 文档检索、查询建议、数据聚合
目录 结构化搜索 term 单词匹配(单个值) terms 单词匹配(多个值) range 范围查询 exists 存在查询.miss 缺失查询 ids id匹配 prefix 前缀匹配 wildca ...
- JPA 2.0 中的动态类型安全查询
如何通过 Criteria API 构建动态查询并减少运行时失败 如果编译器能够对查询执行语法正确性检查,那么对于 Java 对象而言该查询就是类型安全的.Java™Persistence API ( ...
最新文章
- 七夕福利 | 3D视觉从入门到精通系统学习教程
- c++ 回调函数_Java中的回调机制,这篇给你整的明明白白的
- 【Android 逆向】应用数据目录 ( files 数据目录 | lib 应用自带 so 动态库目录 | databases sqlite3 数据库目录 | cache 缓存目录 )
- Linux 下系统调用的三种方法
- artTemplate使用
- linux指令笔试,Linux笔试常用命令
- 一种c#深拷贝方式完胜java深拷贝(实现上的对比)
- WF 创建 SQL 持久性数据库
- html怎么设置子目录,如何让主域名指向public_html下的子目录
- C语言 函数指针 - C语言零基础入门教程
- Excel的导入与导出
- Arduino抢答器
- my log4crc
- 置换检验 配对秩和检验
- 固定效应模型VS随机效应模型
- 开源自动化运维平台Spug
- Latex在PPT(beamer格式)中的页脚,插入reference (footnote), 分栏与不分栏两种情况, 以及如何调节footnote的字体大小
- 设备驱动程序是什么?为什么要有设备驱动程序?用户进程怎样使用驱动程序?
- Lua Single--Method 的对象实现方法(面向对象程序设计)
- centos7.4下Jira6环境部署及破解操作记录(完整版)
热门文章
- 3306 端口 要不要修改_zabbix 自动发现并监控所有端口
- Python读取.set文件和.locs文件
- 3d卷积神经网络_HSNets:使用卷积神经网络从2D轮廓预测3D人体模型
- 蟑螂背上芯片板子,组队去救人类
- 贝叶斯神书《统计反思》推出第二版,视频课程同步上线,作者亲自在线答疑...
- 这款AI语音模型让派大星承认自己是钢铁侠,造假小扎对口型,火到挤爆服务器|在线可玩...
- NeurIPS 2021论文接收结果统计:Oral级论文不足3%,图神经网络火到进前三
- 开始报名丨CCF C³-05@亚马逊云科技:未来云计算之旅
- 小米副总裁崔宝秋:智能手机是今天AI技术最大的平台,AIoT又让AI无处不在 | MEET 2021...
- 谷歌AI发布“会动的”3D物体数据集,附带标记边界框、相机位姿、稀疏点云,网友:快给我的AR模型用上...