美文网首页
再次学习ES--1--Lucene

再次学习ES--1--Lucene

作者: lionel880 | 来源:发表于2018-12-06 11:24 被阅读0次

感觉一次学习ES不够,当时只是学习了如何使用es,更多的是把es当做一个数据库黑盒,只是知道了如何用,确不成考虑过底层的原理,现在希望能补上

1 关于Apache Lucene简介

Lucene 是apache软件基金会一个开放源代码的全文检索引擎工具包,是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。

2 lucene的总体架构

document --文档,数据载体,包含一个或多个字段
field--文档的一个片段,包含2部分,字段名和内容
term--词项:搜索时的单位,代表文本的某个词
token--词条:term在字段中的一次出现,包括term的文本、开始和结束的唯一和类型(分析阶段的概念)

*倒排索引 (inverted index)结构
将term映射到文档的数据结构,是面向词项而不是文档


倒排索引

上面的是笼统的概念,实际的索引会更为复杂,索引还会存储其他信息如词向量(存储一个字段的所有词条),字段的原始信息,文档删除标记等。但不需要掌握这些。

Segment--段
每个索引由多个段组成,索引是总的一个概念,每个段只会被创建一次但会被查询多次,因此在索引期间,段经创建就不会再被修改。所以文档被删除,删除信息会被单独保存在一个文件中,段本身并不改变。
segment merge-- 段合并
多个段合并,由Lucene内在机制决定在某个时刻执行,合并后段数量更少,但是单个段变大,消耗I/O,合并后会清楚一些不再使用的信息

3 分析数据 analysis

文档如何转换为倒排索引,查询如何转换为可用于搜索的词项,这个过程就是 分析
文本分析由分析器执行,分析器分为 分词器(tokenizer),过滤器(filter)和字符映射器(character mapping)组成

  • tokenizer--将文本切割成词条,包括原始信息,如位置,长度等,结构输出为词条流
  • filter--过滤、修改词条,如小写过滤器等
  • character mapping--用于分词前的本文预处理,如HTML的文本去标签

4 查询语言

一个查询,通常被分割为 词项 和 操作符
词项会在查询分析过程中,根据设置进行处理
而操作符包含 布尔操作符(and |or| not),+,-,^(权重,默认为1)

  • 查询的基本就是在字段中查询,Lucene所有的数据都存储在field中,查询提供字段名和查询的从句

lucene的数据存储数据结构,有待深入研究

5 lucene是如何进行多字段查询的

如果有多字段进行查询时,相当于要从2个term的 文档集合取交集,先了解拉链法(有序队列,从小到大比较),再了解用跳表优化拉链法,可以简化时间复杂度为(Olog(N))

相关文章

  • 再次学习ES--1--Lucene

    感觉一次学习ES不够,当时只是学习了如何使用es,更多的是把es当做一个数据库黑盒,只是知道了如何用,确不成考虑过...

  • js再次学习

    新进的公司,又要把我们js(前端)再培训一次,也就顺带学习一次。也收获不少,书读百遍,其义自见。 1、JavaSc...

  • 再次学习python

    最近换了新公司,比之前公司的工作忙了几番,然而周末又踏上了学习之路,想让自己变得更厉害一点,牺牲自己的休息时...

  • css再次学习

    id和class选择器 #para1{text-align:center;color:red;} Hello Wo...

  • 再次学习编码

    Ascii Ascii编码表共128个字符 前32个被称为不可见字符 后96个被称为可见字符 相对可见 不可见字符...

  • 再次认识“学习”

    写作课上,晓云老师让我们利用碎片时间来写作,让自己在空余时间来思考一个话题,于是我就在脑海中琢磨,我写什...

  • 寒假再次到来 学习再次开始

     就这样又一个寒假开始了。如果把学习当作一个大型的RPG游戏,那我去年的学习那就叫做“开荒”。 打过类似游戏的同学...

  • 第一次简书

    学习新东西 再次学习

  • Django orm 再次学习

    Django 的 orm 中使用到了元类和描述符这些高级知识,了解一下的可以看看这篇文章。 元类其实就是用来定义类...

  • 再次学习正面管教

    最近正逢开学季,陪孩子写作业又成了年轻父母们的头疼大事,在孩子找各种理由拖拉磨叽不写作业,不洗漱睡觉的时候...

网友评论

      本文标题:再次学习ES--1--Lucene

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