Lucene的总体架构简介

Lucene学习总结之二:Lucene的总体架构 Lucene总的来说是: 一个高效的,可扩展的,全文检索库。 全部用Java实现,无须配置。 仅支持纯文本文件的索引(Indexing)和搜索(Search)。 不负责由其他格式的文件抽取纯文本文件,或从网络中抓取文件的过程。 在Lucene in action中,Lucene 的构架和过程如下图, 说明Lucene是有索引和搜索的两个过程,包 阅读详情

Lucene的总体架构简介

 

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

Lucene的原作者是Doug Cutting,他是一位资深全文检索专家,曾经是V-Twin搜索引擎的主要开发者,后在Excite担任高级系统架构设计师,目前人事一些Internet底层架构的研究。一开始,Doug Cutting是将Lucene发表在自己的个人主页上。2000年3月将其转移到了SourceForge上,并于2001年10月捐献给了Apache软件聪明,使Lucene成为Jakarta的一个子工程。Lucene的取名来自于Doug Cutting的妻子的名字。

总的来说,Lucene有以下几个特点:

1.高效、可扩展、开源的全文检索引擎工具包

2.Java实现,无须配置

3.仅支持纯文本文件的索引(Indexing)和搜索(Search)

4.不负责由其他格式的文件抽取纯文本文件,或从网络中抓取文件的过程

 

在《Lucene in action》中,Lucene的架构和过程如下图所示:

说明Lucene是有索引和搜索的两个过程,包含索引创建、索引、搜索三个要点。让我们更细一些看Lucene的各组件。

 

1.被索引的文档用Document对象表示

2.IndexWriter通过函数addDocument将文档添加到索引中,实现创建索引的过程

3.Lucene的索引是反向索引

4.当用户查询请求时,Query代表用户查询语句

5.IndexSearcher通过函数search搜索Lucene Index

6.IndexSearcher计算Term Weight和Score并且将结果返回给用户

7.返回给用户的文档集合用TopDocsCollector表示

 

那么,如何应用这些组件呢?让我们再详细到对Lucene API的调用实现索引和搜索过程。

 

一、索引创建过程如下:

1.创建一个IndexWriter用来写索引文件,它有几个参数,INDEX_DIR就是索引文件存放的位置,Analyzer便是用来对文档进行分析和语言处理的分词器。

2.创建一个Document代表我们要索引的文档。

3.将不同的Field加入到文档中。我们知道,一篇文档有多种信息,如题目、作者、内容、修改时间等。不同类型的信息用不同的Field来表示,在本例中,一共有两类信息进行了索引,一个是文件路径path,一个是文件内容contents。其中FileReader的SRC_FILE就表示要索引的源文件。

4.IndexWriter调用函数addDocument将索引写入到索引文件夹中。

 

二、搜索过程如下:

1.IndexReader将磁盘上的索引信息读入到内存,INDEX_DIR就是索引文件存放的位置。

2.创建IndexSearch准备进行搜索。

3.创建Analyer用来对查询语句进行词法分析和语言处理。

4.创建QueryParser用来对查询语句进行语法分析。

5.QueryParser调用parser进行语法分析,形成查询语法树,放到Query中。

6.IndexSearcher调用search对查询语法树Query进行搜索,得到结果TopScoreDocCollector。

 

以上便上Lucene API函数的简单调用。宏观上来讲,Lucene的索引和搜索流程如下图所示:

然而当进入Lucene的源代码后,发现Lucene有很多包,关系错综复杂。通过下图,我们不难发现,Lucene的各源代码模块,都是对普通索引和搜索过程的一种实现。下图取自《开放源代码的全文检索引擎Lucene》http://www.lucene.com.cn/about.htm。

1.Lucene的analysis模块主要负责词法分析及语言处理而形成Term

2.Lucene的index模块主要负责索引的创建,里面有IndexWriter

3.Lucene的store模块主要负责索引的读写

4.Lucene的QueryParser主要负责语法分析

5.Lucene的search模块主要负责对索引的搜索

6.Lucene的similarity模块主要负责对相关性打分的实现

 

PS:《Lucene in action》中的图是老了些,因其是针对lucene 1.4画的。详细到对Lucene API 的调用实现索引和搜索过程的图是lucene 2.9.0的API,现在Lucene 3.0已经出来了。《开放源代码的全文检索引擎Lucene》写的也比较早了,很经典的一篇文章,可以帮助我们了解一些全文检索的基本原理。

 

参考博文:先觉《Lucene3.0原理与代码分析》http://www.cnblogs.com/forfuture1978/archive/2010/02/22/1671487.html

AXI4-Stream FIFO IP核实战指南——从配置到跨时钟域处理 本文是AXI4-Stream FIFO IP核的实战指南,详细讲解了其作为数据流缓冲核心的作用。文章重点涵盖从Vivado环境下的IP核配置、关键参数(如深度与宽度)设定,到跨时钟域处理的完整流程。深入解析了TVALID/TREADY握手协议及TLAST等信号,并提供了常见问题排查与调试技巧,帮助开发者高效实现FPGA/SoC系统中可靠的数据流缓冲与同步。 阅读详情

相关推荐

世界坐标系/相机坐标系/图像坐标系 转换

目录一、各坐标系简要介绍二、坐标系转换2.1 世界坐标系转为相机坐标系2.2 相机坐标系转为物理图像坐标系2.3 物理图像坐标系转为图像坐标系2.4 总结2.5 为什么要使用齐次坐标参考文献 一、各坐标系简要介绍 首先介绍数字图像处理领域中的图像坐标系,如上图左图所示,坐标系O_0为图像坐标系,其原点是在图像的左上角,每一个像素通过其所在位置的列数和行数索引 (u,v) 来表示。 另外需要建立图像坐标与物理单位的关系,而后才能将目标的真实世界坐标转换为图像坐标。即建立以物理单位表示的物理图像坐标系(有些文

流觞时光 1万+

详解Lucene全文检索基础架构

文章目录数据查询方法什么是LuceneLucene全文检索流程索引流程搜索流程Lucene演示索引过程索引演示搜索过程Field域类型索引维护分析器(Analyzer)Lucene原生分析器第三方中文分词器Lucene高级搜索Lucene底层储存结构(高级)词典的构建跳跃表原理FST原理Lucene优化(高级)解决大量磁盘IO选择合适的分词器选择合适的位置存放索引库 本文是bilibili-《超系统学习Lucene全文检索技术》的学习笔记。 数据查询方法 顺序扫描法 数据表中查询包含某个字符串的文档,逐行

十里清风 2109

【SLAM】探索explore_lite在移动机器人自主建图中的高效边界检测策略

本文深入解析了explore_lite在移动机器人自主建图中的应用,重点探讨了其高效的贪婪边界检测策略。该工具包专为资源受限平台设计,通过直接利用SLAM生成的地图信息,以极低的计算开销实现快速、稳定的未知区域探索,并与move_base导航框架无缝协作,是轻量级机器人自主探索的优选方案。

purple的博客 1066

Lucene索引存储结构

内存管理 与 数据存储 索引文档的总体结构 索引(index):Lucene的索引由许多个文件组成,这些文件放在同一个目录下 段(segment):一个Lucene的索引由多个段组成,段与段之间是独立的。添加新的文档时可以生成新的段,达到阈值(段的个数,段中包含的文件数等)时,不同的段可以合并。在文件夹下,具有相同前缀的文件属于同一个段segments...

MayMatrix 的博客 3241

2026年经纬恒润嵌入式笔试试卷带答案

2026年经纬恒润嵌入式笔试试卷涵盖车规MCU选型(如TriCore)、Cortex-M启动流程、指针数组区别、AUTOSAR OS任务调度(静态优先级抢占)、CAN总线特性(终端电阻必要性)、PID控制原理、SOME/IP协议应用等核心知识点。试题聚焦汽车电子系统设计,强调功能安全与实时性要求,涵盖中断处理、Bootloader升级机制、内存布局及可靠性设计(如看门狗、ECC校验)。多选题考察通信协议分层应用,填空题强化基础概念(如MSP初始值、SOME/IP、积分项作用)。整体体现车载嵌入式开发对底层原

Open 75

AI Agent在核电站安全监控中的应用

核电站作为一种高效的能源生产设施,其安全问题一直是全球关注的焦点。任何安全事故都可能导致严重的人员伤亡、环境污染和经济损失。传统的核电站安全监控系统主要依赖于人工操作和固定规则的监控算法,存在监控效率低、无法实时应对复杂情况等问题。本文章的目的在于探讨如何利用AI Agent技术提升核电站安全监控的智能化水平,实现实时、准确的监测和智能决策。范围涵盖了AI Agent的基本原理、在核电站安全监控中的应用场景、相关算法和数学模型,以及实际项目的开发和应用。

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 369

Lucene学习笔记:Lucene的总体结构

Lucene 的构架和过程如下图, 说明Lucene是有索引和搜索的两个过程.让我们更细一些看Lucene的各组件: 被索引的文档用Document对象表示。 IndexWriter通过函数addDocument将文档添加到索引中,实现创建索引的过程。 Lucene的索引是应用反向索引。 当用户有请求时,Query代表用户的查询语句。 IndexSearcher

sunxing007的专栏 1343

Vue3+Openlayers教程导航页【目录】

欢迎来到 Vue3+Openlayers 系列教程,这里是我在 优快云 编写的所有 Vue3+Openlayers 系列相关文章的索引页,适合初学者到进阶用户系统阅读。👀 更多教程正在持续更新中,欢迎关注我,一起探索 Openlayers 的强大魅力!

小彭的博客 1258

Elasticsearch教程---Lucene简介(一)

第一章 概述 Elasticsearch是一个实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据, 它不但稳定、可靠、快速,而且也具有良好的水平扩展能力,是专门为分布式环境设计的,它可以用于全文搜索,结构化搜索以及分析,当然你也可以将这三者进行组合。Elasticsearch是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎,可以说Lucene是当今最先进...

jetty_welcome的博客 1140

LSTM在DNA序列分析中的应用:生物信息学的探索

长短期记忆网络(LSTM)是循环神经网络(RNN)的一个变种,旨在解决RNN在长序列数据中出现的梯度消失和梯度爆炸问题。LSTM通过引入“记忆单元”和三个门(输入门、遗忘门和输出门)来有效捕捉长距离依赖关系。这使得LSTM在处理DNA序列等时间序列数据时具有优势。LSTM在DNA序列分析中展现了强大的能力,能够捕捉复杂的序列特征,并提供高效的解决方案。本文从LSTM的基本原理、DNA序列特性、模型构建、训练过程到实际应用进行了详细阐述。

斌擎科技 748

【Unity 实用工具篇】✨| 使用Fungus插件制作一个对话系统,简单好学易上手

今天带来的是Unity中一款简单易用的对话插件Fungus,它是一个免费的交互式的对话系统。 Fungus是Unity免费的一款开源的插件,它可以无代码的实现玩家与NPC之间的对话,并且支持本地化,对相机、Sprite及音乐音效的控制。 学会使用该插件就可以做一些对话剧情类的游戏了,还是非常好用的,下面就来学习一下Fungus具体怎么使用吧!

努力前行,总会成为自己心中的那道光 1万+

深入Lucene的索引文件

  Lucene的索引里面存了些什么,如何存放的,也即Lucene的索引文件格式,是读懂Lucene源代码的一把钥匙。 当我们真正进入到Lucene源代码之中的时候,我们会发现: Lucene的索引过程,就是按照全文检索的基本过程,将倒排表写成此文件格式的过程。 Lucene的搜索过程,就是按照此文件格式将索引进去的信息读出来,然后计算每篇文档打分(score)的过程。   本文详...

laravel framework 461

Linux(31)Rockchip RK3568 Ubuntu22.04上部署 Docker: 问题与解决方案

本博客在总结这些问题及其解决方案,为遇到类似问题的兄弟提供参考,如果我后续有碰到其他Docker 问题也会在此更新补充。

我其实什么都不会 1645

Lucene总结二:Lucene的总体架构

如下技术文章也是从我之前很久开的csdn账号上面迁移过来的 Lucene总的来说是: 一个高效的,可扩展的,全文检索库。 全部用Java实现,无须配置。 仅支持纯文本文件的索引(Indexing)和搜索(Search)。 不负责由其他格式的文件抽取纯文本文件,或从网络中抓取文件的过程。 在Lucene in action中,Lucene 的构架和过程如下图, 说明Lucene是有索引和搜索的两个过程,包含索引创建,索引,搜索三个要点。 让我们更细一些看Lucene的各组件: 被索引的

haohaizi的博客 683

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Lucene之MaxScorer算法简介

简介           名叫“Lucene之MaxScorer算法分析”其实并不准确,因为有Stefan提交的MaxScorer代码尚未提交到Lucene,至今还在讨论中,具体见:https://issues.apache.org/jira/browse/LUCENE-4571,他索所要解决的问题就是Lucene在计算Top-k时效率慢的问题。 目前Lucene对于MaxScore的计算,

iTer的专栏 3853

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Lucene简介

前言 Lucene 是一个基于 Java 的全文信息检索工具包,目前主流的搜索系统 Elasticsearch 和 solr 都是基于 lucene 的索引和搜索能力进行。想要理解搜索系统的实现原理,就需要深入 lucene 这一层,看看 lucene 是如何存储需要检索的数据,以及如何完成高效的数据检索。 在数据库中因为有索引的存在,也可以支持很多高效的查询操作。不过对比 lucene,数据库的查询能力还是会弱很多,本文就将探索下 lucene 支持哪些查询,并会重点选取几类查询分析 lucene 内部是

weixin_42920757的博客 2861

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

lucene简介

Lucene3.6 入门指南 目录 简介基本流程基本概念Lucene的组成结构搭建环境代码实例   一、 简介 Lucene是什么:Lucene是apache软件基金会jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Luc

1395

lucene简介_Lucene简介

lucene简介 本文是我们名为“ Apache Lucene基础知识 ”的学院课程的一部分。 在本课程中,您将了解Lucene。 您将了解为什么这样的库很重要,然后了解Lucene中搜索的工作方式。 此外,您将学习如何将Lucene Search集成到您自己的应用程序中,以提供强大的搜索功能。 在这里查看 ! 目录 1.简介 1.1什么是全文搜索 1.2为什么我...

最佳 Java 编程 662

Lucene初探之总体架构

从总体上来说,Lucene的可以被概括为三点: 高效、可扩展的全文检索库;基于Java实现;支持对纯文本文件进行索引可搜索; Lucene的工作流程和架构如下所示: 通过该图片,我们可以看出,Lucene的工作流程可以被分为两个部分:索引、搜索。 我们可以将这些过程进行抽象组件化: 通过上下两个图片的对比,基本上可以直观地了解各个组件的工作: D

奋斗的小geek 1065

全文检索系统与Lucene简介

 LUCENE.COM.CN 中国 简介 | 讲座 | 结构 | 实践 | Lucene

水上漂的专栏 9800

【搜索那些事】细谈lucene(三)lucene核心API简介

经过前面的简单理论介绍,相信大家对搜索引擎lucene有个简单的了解。前面我们也提到过在lucene中主要包括索引和搜索这两大方面的组件。今天我们我们就通过一个简单的实例来看一下lucene给我们提供的有关这两个组件的简单用法。一:创建索引 在用lucene搜索之前,我们首先要做的就是是创建索引,只有有索引了,我们才有了搜索的对象,下面我们就根据一个创建索引的小demo来一步步分析一下创建索引的步

曹胜欢 1万+
上一篇: 全文检索的基本概念和原理
下一篇: 偷了世界的程序员(真正让我们成为局域网的不是那个墙,而是我们自己的肤浅)
MONKEY_D_MENG
博客等级 码龄17年 705粉丝 97原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值