美文网首页
基于 ElasticSearch 实现一个简单的搜索引擎服务(未

基于 ElasticSearch 实现一个简单的搜索引擎服务(未

作者: 齐舞647 | 来源:发表于2020-11-25 18:20 被阅读0次

    好吧,上周没写完,这周继续写。。。(惭愧!)

    计划分为两部分吧:
    一篇为应用篇。一篇为原理篇

    周末更新


    最近,正好做后端搜索相关工作,接触到了 ElasticSearch 相关技术,
    顺便整理一下,分享出来。
    一部分作为自身技术积累,一部分也休息沉淀了一段时间,想回归一下写博客的状态。
    本篇主要分为三部分,你将收获:
    1.ElasticSearch 是什么?
    2.ElasticSearch 基本原理
    3.基于 ElasticSearch 实现一个简单的搜索引擎服务(重点)

    一、ElasticSearch 是什么?

    A Distributed RESTful Search Engine.
    一个分布式的 RESTful 搜索引擎。

    简单来说,ElasticSearch(简称:ES)是一个基于 Lucene 的搜索服务器,它提供了分布式的全文搜索引擎。
    它能稳定、可靠、快速的完成大数据的实时搜索,ES 被广泛应用于 “云计算” 、 “搜索引擎” 等领域。
    基于 RESTful API ,简单易用,是当下最受欢迎的企业级搜索引擎。

    例如,Google、某度、360搜索、维基百科、GitHub、某宝等一些电商平台.....等等等等,都基于 ES 完成了一些企业级的最佳实践。

    相关链接:
    ES官网
    GitHub地址

    二、ElasticSearch 基本原理

    在讲述 ES 基本原理之前,先给大家设定一个场景 case:
    我们打开某个搜索引擎,比如某度,
    在搜索框里输入 “PHP是世界上最好的语言”
    某度是如何在这么多文档里,迅速找到与 PHP是世界上最好的语言 相关的所有网站的呢?

    搜索内部步骤分为:

    第一步:简化

    对用户输入的语句,进行简化分析。

    举例,“ PHP 是世界上最好的编程语言 ”。
    可能会被转化成

    —— PHP AND 世界第一 AND 编程语言

    不同的搜索引擎翻译的可能不一样,但基本都有 AND、OR、NOT 的语法转换。(也就是我们熟悉的与、或、非嘛)

    这个阶段会提取语句的“关键词”,将一些语气词、助词、副词等等去除。
    将关键词与语法(AND、OR、NOT)组合,得到引擎可识别的语句。

    第二步:生成语法树

    对查询语句进行词法分析、语法分析后,生成语法树。

    还是这个例子,

    PHP 是世界上最好的语言
    |
    PHP AND 世界第一 AND 编程语言
    |
    生成语法树:

    第三步:倒排检索

    基于 ES 的倒排索引,找到所有符合语法树的文档。

    这里简单解释下,倒排索引。
    我们正常shu

    第四步:打分排序

    对所有文档进行打分,最终对分值进行排序。

    当然,这是搜索的最基本的步骤。
    实际上,各大厂内部肯定还会有各种各样的定制与优化,不过整体流程应该都是类似的。
    更详细的内部原理与算法,我会在后续的原理篇给大家慢慢介绍。

    三、ElasticSearch 应用

    本节将从 ES 简单实践说起,
    讲解 —— 如何使用 ES 做一个简单的搜索引擎服务

    阮一峰老师的博客:curl

    相关文章

      网友评论

          本文标题:基于 ElasticSearch 实现一个简单的搜索引擎服务(未

          本文链接:https://www.haomeiwen.com/subject/cigniktx.html