elasticsearch 分词器查询结果 java如何实现搜索功能?
java如何实现搜索功能?
Javaw:。
我以一个简单的电子商务系统为例。
1.在前台页面上准备几个输入框和搜索按钮。
比如用订单号作为关键字进行模糊搜索,再看看html页面的编码。
点击查询按钮,收到用户输入的信息后提交表单表单(验证工作省略)。
这里我们使用前端jQuery,其中url是我们想要请求的后台方法地址(这里是相对地址)。
让 让我们来看看后台控制器的控制器代码。
后台收到前台post提交的参数后,封装成hashmap,作为正式参数传入服务层。
服务的实现类是这样的。
收到这个hashmap后,服务实现类调用dao层的selectByMap接口,也就是我们所说的数据访问层,它直接与数据库交互。
这是dao接口对应的mapper文件,其中定义了一条id为selectByMap的sql语句。最后用like关键字作为where语句的查询条件之一查询订单号。
最后,dao层说来自数据库的查询结果返回给服务层,服务返回给控制器。最后将数据呈现给html,浏览器为我们渲染html。
这是搜索的一般流程。由于篇幅有限,我说的没有那么详细,旨在给大家一个更接地气、更通俗易懂的介绍。如果你对Java感兴趣,可以私信我,详细介绍。
欢迎大牛们拍砖指导,谢谢!
从功能上来说,我们一般从页面输入关键词,点击就能搜索出一串列表数据,比如百度。整个过程是页面输入关键字——gt传递给后台服务器——gt服务器从db获取数据,最后返回给用户,实现了简单的搜索功能。
但是如果后期工作比较复杂,随着用户和数据量的增加,频繁的搜索会增加web应用或者db的压力,所以缓存和分页会在后面考虑。但是如果以后想更聪明,可以用lucene全文搜索引擎,基于lucene的应用有solr,elasticsearch等等。后面会考虑智能分词,这里会涉及到nlp。之后,我们可以根据用户输入的关键词向用户推荐不同的产品或数据。这里我们考虑用ai hadoop来分析用户喜欢什么,然后推荐给用户。
elasticsearch海量数据存储规则?
es的底层是lucene,lucene索引是倒排索引,数据已经写入。程序将javabean转换成文档对象,然后存储在索引库中,索引库分为索引区和文档区。写作过程首先需要分段。索引区域存储单词及其在哪篇文章中的位置,而文档区域存储所有内容。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。