页面中查询模块的设计与实现思路

在做一个物品的展示管理页面,想把增删改查都放到页面中,用axure画了一个页面,比较简单,主要分为上下两部分,上半部分是查询模块,下半部分是表格,用来展示数据。新增按钮单独在页面中,修改按钮在表的每一行数据后面,删除按钮在表格下面,将表格中的数据每一行设为可选,选择后进行删除操作。查询部分没有考虑很多,只是列了几个物品的主要属性,有下拉框有文本框,可选可填,然后查询,其实默认的就是这些查询条件之间是“与”的关系。


图1 自己设计的查询模块
??项目在讨论的时候,技术领导说了一下这个地方设计的问题,也提了一些设计思路。下来之后,自己查资料看了看相关的查询设计,总结了几种查询(或者称检索、过滤等)的设计与实现思路,查询种类的名称自己起的,可能不太严谨,技术实现主要针对后台数据库,谈一谈实现的思路。
一 智能查询


图2 智能查询实例
1 界面设计
??这种查询,界面比较简单,平时我们用的百度,google的查询,还有很多网页的全网查询,比如,CSDN的博客查询,都是属于智能查询。只有一个输入框,外加一个查询按钮,用户可以输入任意自己想要查找的内容,然后点击查询按钮就可以获得查询结果。

2 技术实现
??查询界面很简洁,功能却很强大,实现要靠后台做大量的工作,像google、百度实现起来可能更复杂,毕竟,靠这个搜索能撑起一个公司,技术肯定不会简单。我们做过类似的智能问答,也算是智能查询,说一下我们的实现思路。
??着重针对中文输入的查询,首先是分词,英文不存在分词问题,空格就是明显的界限。中文分词研究的比较多,可以在网上找一个开源的或者提供API接口的直接使用,这样就可以将输入分为很多词,然后根据这些词分别进行查询,每个词都可以得到很多结果,这时候,就可以设计一定的策略,比如按照词的长度设计权重,重叠的结果将权重进行叠加,最后可以将结果进行排序。也就是我们得到最终答案。

二 万能查询


图3 万能查询实例
1 界面设计
??这种查询可以将查询条件任意的组合,每个查询条件都是一个键值对,键值对由字段和字段的值构成,比如CNKI的期刊检索,可以将多个条件进行逻辑组合,篇名有hello,篇名有kitty,主题有haha,主题有test等,再加上与,或,非的逻辑关系,查询条件就是篇名有hello而且有kitty,或者主题有haha并且没有test的期刊。可以在查询条件中将所有的属性都列出来,再用与或非逻辑组合,这种查询方式很通用,针对不同的数据,只需要更改属性就可以了,也就是数据的字段,可以做到一次编程,到处使用,所以称为万能查询。不过这种查询方式,不是太友好,需要用户输入的东西比较多,操作起来相对麻烦,只适用于特定的场合,比如CNKI,数据量大,查询比较开放。

2 技术实现
??这类查询后台实现相对简单,可以直接根据页面的查询条件,拼接查询语句。比如关系型数据库的SQL语句,and、or、not都是现成的语法,可以将组合的条件直接转换为SQL语句,然后到数据库中进行查询,可以很快得到结果。

三 便捷查询


图4 便捷查询实例
1 界面设计
??为了方便用户查询,便捷只把那些特别重要的属性列出来,供用户选择,也可以看作是过滤,条件不断叠加,范围逐渐缩小,直到找到要查找的物品。比如京东想购买一款笔记本,通过电脑整机–>笔记本–>家庭使用,然后再添加其他条件,价格、品牌、尺寸、处理器、内存等,最后得到自己想要的结果。这类查询,会把用户关注的属性都列出来,然后让用户选择,操作简单,容易上手,界面比较友好,用的比较多。

2 技术实现
??这类查询是层层过滤的,用户每增加一个查询条件后,就将该条件放到缓存中,结果显示出来,再增加条件,把这个条件与前面的条件进行叠加,在查询结果中进行二次查找,再次得到结果。具体实现,可以将查询结果放到临时缓存中,下一次查询在缓存结果中查找,可以提高查询效率。

总结
??查询模块是页面中比较常用的一个模块,页面中经常会碰到,原来没有太注意,这次多看了一下,找到了这么几种,简单做下记录,如果有其他比较典型的查询设计,也希望朋友们不吝赐教。

原文地址:https://www.cnblogs.com/coodream2009/p/9830242.html

时间: 2024-10-21 18:00:54

页面中查询模块的设计与实现思路的相关文章

IM系统中聊天记录模块的设计与实现

看到很多开发IM系统的朋友都想实现聊天记录存储和查询这一不可或缺的功能,这里我就把自己前段时间为傲瑞通(OrayTalk)开发聊天记录模块的经验分享出来,供需要的朋友参考下. 一.总体设计 1.存储位置 从一开始我们就打算在服务端和客户端本地同时存储聊天记录,而且,在客户端查看聊天记录时,可以选择是从本地加载.还是从服务器加载.这样做的好处有两个: (1)从本地加载聊天记录速度非常快. (2)当更换了登录的机器,在任何地方任何时刻都可以从服务器加载完整的聊天记录,记录永远不会丢失. 2.存储方案

Java SSH框架系列:用户登录模块的设计与实现思路

时间 2014-01-19 16:14:54  CSDN博客原文  http://blog.csdn.net/nupt123456789/article/details/18504615 1.简介 用户登录模块,指的是根据用户输入的用户名和密码,对用户的身份进行验证等.如果用户没有登录,用户就无法访问其他的一些jsp页面,甚至是action都不能访问. 二.简单设计及实现 本程序是基于Java的SSH框架进行的. 1.数据库设计 我们应该设计一个用户表,其Userinfo表,对应的SQL语句为(

jqgrid postData setGridParam 调用多次时查询条件累加的问题--详情页查询导致的无法在新的页面中查询

$("#btn_search").click(function () { url = "/AMEvents/GetGridJson?evtype=1"; var $gridList = $("#gridList"); var posData = $("#searchform").formSerialize() $gridList.setGridParam( { url: url, postData: posData } ).t

关系型数据库中常用的表设计

1.字典表(sys_dict) 作用:用于存放多组值不变的基础数据,只对系统提供查询功能. *记录的新增.更新.删除都是通过手动进行操作. *其中dict_code为dict_title的编码,相同dict_title的记录为同一组基础数据,每组基础数据下又有多对dict_value与dict_name. *每组基础数据可以根据实际的业务需求在程序中创建对应的枚举类(value和name属性). 2.系统配置表(sys_config) 作用:用于存放系统的配置项,某些业务逻辑需要根据配置项的值来

跟我一起学extjs5(13--执行菜单命令在tabPanel中显示模块)

跟我一起学extjs5(13--执行菜单命令在tabPanel中显示模块) 上面设计好了一个模块的主界面,下面通过菜单命令的执行来把这个模块加入到主界面当中.在MainModule.js中有一个函数,生成了当前的菜单数据: // 根据data.systemMenu生成菜单条和菜单按钮下面使用的菜单数据 getMenus : function() { var items = []; var menuData = this.get('systemMenu'); // 取得定义好的菜单数据 Ext.A

电子商务(电销)平台中用户模块(User)数据库设计明细

以下是自己在电子商务系统设计中的订单模块的数据库设计经验总结,而今发表出来一起分享,如有不当,欢迎跟帖讨论~ 用户基础表(user_base)|-- 自动编号 (user_id)|-- 用户名 (user_name)|-- 手机号码|-- 电子邮件|-- 登录密码 (password)|-- 用户状态 (status) 用户开放登录帐号表|-- 自动编号|-- 用户编号|-- 腾讯QQ号码 (qq)|-- 微信号码 (wechat)|-- 淘宝帐号 (taobao)|-- Skype (skyp

系统管理模块_部门管理_改进_抽取添加与修改JSP页面中的公共代码_在显示层抽取BaseAction_合并Service层与Dao层

系统管理模块_部门管理_改进1:抽取添加与修改JSP页面中的公共代码 commons.jspf <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <meta http-equiv="Conten

权限模块_分配权限_显示树状结构_页面中的选中效果

权限模块__分配权限__显示树状结构1 显示树状结构:依赖关系 setPrivilegeUI.jsp <!-- 显示权限树 --> <td> <!--用它回显 <s:checkboxlist name="privilegeIds" list="#privilegeList" listKey="id" listValue="name"></s:checkboxlist> --

如何在自己设计的页面中调用metamask-1

() 下面是cryptokitties这个游戏使用metamask的方法: 如果你没有添加metamask并且打开它,你是进不去这个游戏的,你点击开始游戏,它会一直卡在这里 然后当你打开了metamask之后,这时候无论你连接的是什么网络,这时候应该是探测到了window.web3.currentProvider !== 'undefined'了,然后你就可以进行下一步注册了 上面那样子就注册好了,这个时候你就能够进行登录了 然后点击登录后你就能够看见下面的页面弹出: 就是你想要进入这个页面你需