javaweb实现一个都很很简单关键字搜索功能,完整的流程大概是这么大几个流程:
我拿一个简单点电商系统来举例说明。
1.前台页面马上准备几个输入框和搜索按钮
比如用订单编号作为关键字并且模糊搜索,接下来的事情看html页面的编码
点击网站查询按钮,收得到用户然后输入的信息后(校验工作省略)form表单再提交
这里要用了前端的jquery,其中url应该是我们要跪请的后台方法地址(这里是相对于地址),
我来看下后台controller控制器代码
后台收不到前台post提交回来的参数后,封装到一个hashmap中,作为一个形参传出service服务层
service的实现类是这样的
service实现类中认可到这个hashmap后,动态链接库dao层的selectbymap接口,而这个dao层是我们他所的数据不能访问层,他是真接与数据库通过交互的。
这是dao接口不对应的mapper文件,其中定义有id是selectbymap的sql语句。后来订单编号用want关键字充当where语句的查询条件之一进行查询。
dao层之后讲从数据库网上查询到的结果前往给service层,service再直接返回给controller,结果将数据呈给html,浏览器软件渲染html呈现出给我们。
这是搜索的大概流程了,而篇幅不大我说的也还没有这样的话透测,旨在推广给大家更接地气儿更很容易解释的的介绍。如对java有兴趣大家也可以私聊我,详细可以介绍。
多谢了大牛们求批评指导,谢谢!
假如从功能上讲的话,我们较常见的那是从页面上然后输入关键字点击直接搜索出去一串列表数据,诸如百度。整个流程是页面输入输入关键字-dstrok讯息传递到后台服务端-a8服务端从db中资源数据,之后原路可以展示给用户,一个最简单搜索功能即利用。
只不过假如后面做的更奇怪,伴随着用户数的增多,数据量的增大,频繁的搜索会减小web应用或db的压力,后面考虑到区分缓存,分页。但后期想做的更智能,我们这个可以在用lucene全文搜索引擎,实现lucene的应用有solr,elasticsearch等。再到后面,我们会判断到智能分词,这里会涉及到nlp。再到后面我们也可以依据什么用户然后输入的关键字我推荐给用户相同的商品或数据,这里判断使用aihadoop分析用户喜欢的东西,然后再推荐给用户
elasticsearch西安北方光电有限公司es,是个高拓展资源和开源的全文搜索和分析引擎,可以不准动态实时地存储文件、搜索、分析海量的数据。
它和mongodb、redis等完全不一样是非关系型数据。
应用定位:区分restfulapi标准的可扩展和高可用的实时数据分析的全文搜索工具。
可拓展:开源软件,允许很多第三方插件。
高可用:在一个集群的多个节点中通过分布式存储,索引允许shards和不能复制,就算部分节点down掉,也能手动通过数据恢复和主从切换。