Elastic Search实现快速检索之一

        在开发系统的时候,数据查询是最基本的功能。正常情况下数据的查询,实际上是通过sql语句,如果数据量不是很大,通过sql查询基本可以满足需求。但是不同的系统用户对系统的查询要求差异很大,比如某一电商系统用户想要模糊查询某一商品的销售情况,对于IT人员来说,实现这一功能非常的容易,只要写一个like模块查询语句,基本就可以达到目的。通过这种方式如果数据量小不会有太大的问题,如果数据量在百万,甚至是千万级以上,这种情况下,如果在使用这种like模糊查询基本是很难达到标准,而且对数据库的压力也非常大,因为这种查询方式原理,实际上就是一条一条数据的去对比,百万条数据,那就意味着要比较百万次,可想而知效率有多低。所以这种瓶颈问题基本就阻碍了系统的友好性。当然如果在一些表中加上索引(避免全表扫描)可以改善这种缺点,比如通过ID去查询某一个用户,这种查询是非常快速的,因为加了索引就好像字典查询一样,通过首页的目录就可以很快的查询到要查找的汉字。然而,扬汤止沸终究不是长久之际。

        针对上文的缺陷,全文检索技术有效的解决了这一问题。它的原理很复杂,因为要考虑很多东西,不仅仅是实现功能还要考虑效率。但是基本道理简单来说,其实就是把内容(分词)存放到一个索引库里,然后在查询的时候能够快速的定位到查找的内容。给大家举个我个人这样理解的简单的例子。比如,我之前在学习的时候记录的课堂笔记,随着时间的推移,笔记积累了很多东西,每次查找某一个知识点的时候都要从头开始翻起,一页一页花费很长时间才能找到。后来我觉得这样很耗时,我就把我要查找的一些知识点用一页纸给记录下来,知识点后面标记的是页码,这样下次查找的时候,我只要通过这页纸就可以很快找到我要找的知识点,在也不用费时的一页一页去翻了(记录知识点和页码这一过程可能会前期麻烦费力,但是以后查询的时候就会很轻松,总之利大于弊)。那这一页记录知识点关键词和页码的纸,就可以理解为全文检索技术中的索引库。

        全文检索技术是基于Lucene的搜索引擎服务器。主要有Solr和Elastic Search等。其中Lucene是java编写的全文检索引擎底层开发包,也有.Net移植版本的Lucene.Net。但是基本Lucene的开发难度比较大,所以主要使用Elastic Searh这种基于Lucene的搜索引擎服务器来实现全文检索功能。由于Elastic Search(简称ES)是使用java开发的,因此运行的时候要配置java的运行环境。需要注意的是,这些搜索引擎服务器都是客户端SDK+服务器的使用模式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值