谈谈对搜索技术Elastic Search&Lucene的理解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gshengod/article/details/82980483

前言

十一一直陪家人,所以也没时间写文章。最近刚好赶上Elastic Search上市,其实在圈子里还是挺轰动的,因为这个也是少数的靠卖开源软件服务上市的公司。大家都知道ES是做搜索服务的,今天就聊聊我对搜索的认识

从业务属性讲

搜索的话,其实是大家接触最多的一类业务。其实说机器学习,其实是一门技术,而搜索是一项业务,机器学习可以应用到搜索业务中去,同时中间件技术、数据库技术等都跟搜索密不可分。

从业务属性上讲搜索的话,在我眼里分为两种。一种是简单的匹配类搜索,一种是业务导向类。前者的追求是最高效率的找到跟输入信息匹配的内容,Google、百度做的事情就是这种。业务导向型,更多地是将搜索赋予业务逻辑,比如A在电商平台搜索以一个包,电商平台可以根据A的消费能力去匹配最合适的产品,甚至返回的不是包而是一个跟包搭配的裙子。

倒排索引/正派索引

真正的搜索业务不会是暴力的从全部数据中遍历搜索的。一定是将一类数据建成索引。倒排或者正排表示的是索引建立的方法,这个索引建立也就是数据建模过程,是搜索系统的核心。

在这里插入图片描述

上图是一种索引关系,正排索引是以Document,也就是文章ID为主key,如果要搜索某个关键词,需要遍历每一篇文章,搜索的时候计算量很大,好处是建模容易。

倒排索引就是以词为主key,搜索的时候找到词之后返回这个词所在的文章。这种方式搜索的时候计算量小,建模比较难。倒排索引也是目前的主流搜索索引建模方法。

Lucene

Lucene是非常有名的搜索引擎了,包含下面的整套架构,从上面提的索引创建,到用户的访问。

在这里插入图片描述

Elastic Search其实是在这一套上面做了分布式服务,规范了各种访问和查询接口,支持多点容灾和查询。

未来的搜索

现在的搜索其实已经内嵌了很多机器学习相关的组件,比如建索引的时候会有分词、文本理解相关的应用。未来随着人工智能的发展我觉得搜索这项业务的本质会发生变化。

现在搜索做的事情是匹配用户输入的信息和世界上已经存在的信息。未来随着类似于深度学习GAN模型的发展,或者其它生成类技术的发展。

搜索会变成自动生成用户输入的内容,比如现在用户输入“黄片儿”,搜索引擎是利用爬虫去找已经存在的黄片,未来可能就直接现场人工智能造一个黄片返回,甚至能根据用户习惯自定义。

这个就是想说的内容,未来机器学习在搜索领域一定大有可为,持续关注这个业务方向~

阅读更多
换一批

没有更多推荐了,返回首页