JAVA技术交流QQ群:170933152

Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎

全文检索概述

比如,我们一个文件夹中,或者一个磁盘中有很多的文件,记事本、world、Excel、pdf,我们想根据其中的关键词搜索包含的文件。例如,我们输入Lucene,所有内容含有Lucene的文件就会被检查出来。这就是所谓的全文检索。

因此,很容易的我们想到,应该建立一个关键字与文件的相关映射,盗用ppt中的一张图,很明白的解释了这种映射如何实现。

倒排索引

有了这种映射关系,我们就来看看Lucene的架构设计。 下面是Lucene的资料必出现的一张图,但也是其精髓的概括。

我们可以看到,Lucene的使用主要体现在两个步骤:

1 创建索引,通过IndexWriter对不同的文件进行索引的创建,并将其保存在索引相关文件存储的位置中。

2 通过索引查寻关键字相关文档。

在Lucene中,就是使用这种“倒排索引”的技术,来实现相关映射。

Lucene数学模型

文档、域、词元

文档是Lucene搜索和索引的原子单位,文档为包含一个或者多个域的容器,而域则是依次包含“真正的”被搜索的内容,域值通过分词技术处理,得到多个词元。

For Example,一篇小说(斗破苍穹)信息可以称为一个文档,小说信息又包含多个域,例如:标题(斗破苍穹)、作者、简介、最后更新时间等等,对标题这个域采用分词技术又可以得到一个或者多个词元(斗、破、苍、穹)。

Lucene文件结构

层次结构

index 一个索引存放在一个目录中

segment 一个索引中可以有多个段,段与段之间是独立的,添加新的文档可能产生新段,不同的段可以合并成一个新段

document 文档是创建索引的基本单位,不同的文档保存在不同的段中,一个段可以包含多个文档

field 域,一个文档包含不同类型的信息,可以拆分开索引

term 词,索引的最小单位,是经过词法分析和语言处理后的数据。

正向信息

按照层次依次保存了从索引到词的包含关系:index–>segment–>document–>field–>term。

反向信息

反向信息保存了词典的倒排表映射:term–>document

IndexWriter lucene中最重要的的类之一,它主要是用来将文档加入索引,同时控制索引过程中的一些参数使用。

Analyzer 分析器,主要用于分析搜索引擎遇到的各种文本。常用的有StandardAnalyzer分析器,StopAnalyzer分析器,WhitespaceAnalyzer分析器等。

Directory 索引存放的位置;lucene提供了两种索引存放的位置,一种是磁盘,一种是内存。一般情况将索引放在磁盘上;相应地lucene提供了FSDirectory和RAMDirectory两个类。

Document 文档;Document相当于一个要进行索引的单元,任何可以想要被索引的文件都必须转化为Document对象才能进行索引。

Field 字段。

IndexSearcher 是lucene中最基本的检索工具,所有的检索都会用到IndexSearcher工具;

Query 查询,lucene中支持模糊查询,语义查询,短语查询,组合查询等等,如有TermQuery,BooleanQuery,RangeQuery,WildcardQuery等一些类。

QueryParser 是一个解析用户输入的工具,可以通过扫描用户输入的字符串,生成Query对象。

Hits 在搜索完成之后,需要把搜索结果返回并显示给用户,只有这样才算是完成搜索的目的。在lucene中,搜索的结果的集合是用Hits类的实例来表示的。

搜索引擎学习笔记001---lucene简明介绍相关推荐

  1. 《ETL原理及应用》学习笔记 ·001【ETL介绍】

    注:前言.目录见 https://blog.csdn.net/qq_44220418/article/details/108428971 Tips:本节内容偏概念性,做简单了解即可 文章目录 一.ET ...

  2. 前端开发~H5 ·学习笔记 ·001——【HTML介绍、常用HTML标签】

    文章目录 一.HTML介绍 1.介绍 2.HTML标签 (1).介绍 (2).嵌套 (3).属性 3.HTML文档结构 (1).完整结构 (2).<!DOCTYPE html>标签 (3) ...

  3. HTML/CSS学习笔记01【概念介绍、基本标签】

    w3cschool菜鸟教程.CHM(腾讯微云):https://share.weiyun.com/c1FaX6ZD HTML/CSS学习笔记01[概念介绍.基本标签.表单标签][day01] HTML ...

  4. C语言学习笔记---001C语言的介绍,编译过程原理,工具等

    C语言学习笔记---001C语言的介绍,编译过程原理,工具等 创梦技术交流平台:资源下载,技术交流,网络赚钱: 交流qq群:1群:248318056 2群:251572072 技术交流平台:cre.i ...

  5. ESP32学习笔记(一) 芯片型号介绍

    ESP32学习笔记(一) 芯片型号介绍 目录: ESP32学习笔记(一) 芯片型号介绍 ESP32学习笔记(二) 开发环境搭建 VSCode+platformio ESP32学习笔记(三) 硬件资源介 ...

  6. DataCamp的intermediate python学习笔记(001)

    DataCamp DataScientist系列之intermediate python的学习笔记(001) 个人感悟:接触python是从2017年1月开始的,中间的学习之路也是断断续续的,学了忘, ...

  7. MATLAB学习笔记#001 获取矩阵大小

    MATLAB学习笔记#001 获取矩阵大小 size 函数 语法 说明 示例 参考链接 size 函数 语法 [sz1,...,szN] = size(___) 说明 返回矩阵各个维度的长度 示例 [ ...

  8. STM32 HAL库学习笔记2 HAL库介绍

    STM32 HAL库学习笔记2 HAL库介绍 CMSIS标准 一.再次认识HAL库 HAL库设计思想 HAL库实现方式 以GPIO模块为例 GPIO外设数据类型 GPIO外设接口函数 二.使用HAL库 ...

  9. 学习笔记 | 内生性全面介绍

    一直以来,对内生性的理解都是似懂非懂,就像是蒙着一层黑纱,哈哈~ 所以,今天上午把关于内生性的知识认真地看了一遍,梳理了一遍,总结一下,方便后面学习. 内容包括三大块:内生性来源.解决.典型例子 主要 ...

  10. 阿里大神最佳总结Flutter进阶学习笔记,技术详细介绍

    开头 很多人工作了十年,但只是用一年的工作经验做了十年而已. 高级工程师一直是市场所需要的,然而很多初级工程师在进阶高级工程师的过程中一直是一个瓶颈. 移动研发在最近两年可以说越来越趋于稳定,因为越来 ...

最新文章

  1. 机器学习系列(1)_逻辑回归初步
  2. 为什么学Python
  3. 基于Kebernetes 构建.NET Core技术中台
  4. VSCode.exe扩展主机意外终止。请重新加载窗口以恢复。
  5. 首帧秒开+智能鉴黄+直播答题,阿里云直播系统背后技术大起底
  6. thinkpad重装系统不引导_4个步骤,轻松解决电脑重装系统【蓝屏】
  7. mysql 字符串截取_mysql数据库13种常用函数方法总结
  8. android学习日记15--WebView(网络视图)
  9. java agent 开发_IDEA + maven 零基础构建 java agent 项目
  10. 谷歌推出开源工具DeepVariant,用深度学习识别基因变异
  11. 《JavaScript构建Web和ArcGIS Server应用实战》——1.5 总结
  12. java 实验室预约系统_基于Java的实验室预约管理系统
  13. 计算机管理系统的图片,图片管理软件哪个好用?5款好用的图片管理软件推荐...
  14. 鸿蒙思维闪卡训练,提高孩子智力,父母不妨使用思维导图来提升孩子记忆力和创造力...
  15. 装修店铺营销活动策划?
  16. 软件开发过程与项目管理(14.项目核心计划执行控制)
  17. 现货黄金入门:初识心理
  18. Linux-Ubuntu下安装python和卸载
  19. 深度学习 (五)cbow、skip-gram of word2vec
  20. i7 1255u和i5 1135G7哪个好

热门文章

  1. HDU-2191-悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(dp)
  2. System.arraycopy和Arrays.copyOf的关系
  3. Ubuntu环境搭建一:安装tftp服务器程序
  4. FreeSurfer Tutorial Datasets训练数据配置
  5. 百面机器学习 #2 模型评估:03 余弦距离和余弦相似度、欧氏距离
  6. linux系统下修改某个文件夹下所有的文件权限
  7. at/cron计划任务初解
  8. 微信小程序开发问题汇总
  9. 加快战略转型进程:统帅电器挺进年轻用户市场
  10. nodejs之处理GET请求