Lucene基础概念

ROS2仿真抓取分拣案例,使用myCobot 280机械臂结合ROS2系统搭建机械分拣站 本案例展示了如何利用myCobot 280 urdf模型构建一个对象分类站,并在ROS2 jazzy中完成运动规划。 阅读详情

1.什么是全文检索

   全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方法。这个过程类似于通过字典的目录查字的过程。

   将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对此有一定结构的数据进行搜索,从而达到搜索相对较快的目的。这部分从非结构化数据中提取出的然后重新组织的信息,我们称之索引。

    例如:字典。字典的拼音表和部首检字表就相当于字典的索引,对每一个字的解释是非结构化的,如果字典没有音节表和部首检字表,在茫茫辞海中找一个字只能顺序扫描。然而字的某些信息可以提取出来进行结构化处理,比如读音,就比较结构化,分声母和韵母,分别只有几种可以一一列举,于是将读音拿出来按一定的顺序排列,每一项读音都指向此字的详细解释的页数。我们搜索时按结构化的拼音搜到读音,然后按其指向的页数,便可找到我们的非结构化数据——也即对字的解释。

    这种先建立索引,再对索引进行搜索的过程就叫全文检索(Full-Text Search) 。虽然创建索引的过程也是非常耗时的,但是索引一旦创建就可以多次使用,全文检索主要处理的是查询,所以耗时间创建索引是值得的。

2.什么是Lucene

  Lucene 是 apache 下的一个开放源代码的全文检索引擎工具包。提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene 的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能。

3.Lucene适用场景

  1)在应用中为数据库中的数据提供全文检索实现。

  2)开发独立的搜索引擎服务、系统。

4.Lucene特性

  1. 稳定、索引性能高

    1)每小时能够索引150GB以上的数据

    2)对内存的要求小,只需要1MB的堆内存

    3)增量索引和批量索引一样快

    4)索引的大小约为索引文本大小的20%~30%

   2.高效、准确、高性能的搜索算法

     1)良好的搜索排序

     2)强大的查询方式支持:短语查询、通配符查询、临近查询、范围查询等

     3)支持字段搜索(如标题、作者、内容)

     4)可根据任意字段排序

     5)支持多个索引查询结果合并

     6)支持更新操作和查询操作同时进行

     7)支持高亮、join、分组结果功能

     8)速度快

     9)可扩展排序模块,内置包含向量空间模型、BM25模型可选

     10)可配置存储引擎

  3.跨平台

      1)纯java编写

      2)作为Apache开源许可下的开源项目,你可以在商业或开源项目中使用

      3)Lucene有多种语言实现版(如C,C++、Python等),不仅仅是JAVA

5.核心概念:

   Document:

       用户提供的源是一条条记录,它们可以是文本文件、字符串或者数据库表的一条记录等等。一条记录经过索引之后,就是以一个Document的形式存储在索引文件中的。用户进行搜索,也是以Document列表的形式返回。

    Filed:

       一个Document可以包含多个信息域,例如一篇文章可以包含“标题”、“正文”、“最后修改时间”等信息域,这些信息域就是通过Field在Document中存储的。

       Field有两个属性可选:存储和索引。通过存储属性你可以控制是否对这个Field进行存储;通过索引属性你可以控制是否对该Field进行索引。

       如果对标题和正文进行全文搜索,所以我们要把索引属性设置为真,同时我们希望能直接从搜索结果中提取文章标题,所以我们把标题域的存储属性设置为真,但是由于正文域太大了,我们为了缩小索引文件大小,将正文域的存储属性设置为假,当需要时再直接读取文件;我们只是希望能从搜索解果中提取最后修改时间,不需要对它进行搜索,所以我们把最后修改时间域的存储属性设置为真,索引属性设置为假。上面的三个域涵盖了两个属性的三种组合,还有一种全为假的没有用到,事实上Field不允许你那么设置,因为既不存储又不索引的域是没有意义的。

6.创建索引

    我们以京东购物的搜索为例,在网站上输入关键字搜索显示的内容不是直接从数据库中来的,而是从索引库中获取的,网站的索引数据需要提前创建的。以下是创建的过程:

     第一步:获得原始文档。就是从mysql数据库中通过sql语句查询需要创建索引的数据。

     第二步:创建文档对象(Document),把查询的内容构建成lucene能识别的Document对象,获取原始内容的目的是为了索引,在索引前需要将原始内容创建成文档,文档中包括一个一个的域(Field),这个域对应就是表中的列。

    注意:每个 Document 可以有多个 Field,不同的 Document 可以有不同的 Field,同一个Document可以有相同的 Field(域名和域值都相同)。每个文档都有一个唯一的编号,就是文档 id。

    第三步:分析文档。将原始内容创建为包含域(Field)的文档(document),需要再对域中的内容进行分析,分析的过程是经过对原始文档提取单词、将字母转为小写、去除标点符号、去除停用词等过程生成最终的语汇单元,可以将语汇单元理解为一个一个的单词。

   第四步:创建索引。对所有文档分析得出的语汇单元创建索引,索引的目的是为了搜索,最终要实现只搜索被索引的语汇单元从而找到 Document(文档)。

(注意:创建索引是对语汇单元索引,通过词语找文档,这种索引的结构叫 倒排索引结构。)

7.倒排索引

   倒排索引记录每个词条出现在哪些文档,及在文档中的位置,可以根据词条快速定位到包含这个词条的文档及出现的位置。

   文档:索引库中的每一条原始数据,例如一个商品信息、一个职位信息。

   词条:原始数据按照分词算法进行分词,得到的每一个词。

  创建倒排索引,分为以下几步:

     1)创建文档列表

       lucene首先对原始文档数据进行编号(DocID),形成列表,就是一个文档列表

                                                              

 

2)创建倒排索引列表

   对文档中数据进行分词,得到词条(分词后的一个又一个词)。对词条进行编号,以词条创建索引。然后记录下包含该词条的所有文档编号(及其它信息)。

                                                             

搜索的过程:

     当用户输入任意的词条时,首先对用户输入的数据进行分词,得到用户要搜索的所有词条,然后拿着这些词条去倒排索引列表中进行匹配。找到这些词条就能找到包含这些词条的所有文档的编号。然后根据这些编号去文档列表中找到文档

 

8.查询索引

   第一步:创建用户接口:用户输入关键字的地方

   第二步:创建查询 指定查询的域名和关键字

   第三步:执行查询

   第四步:渲染结果 (结果内容显示到页面上 关键字需要高亮)

 

YOLOv11改进策略【模型轻量化】| 使用 MoblieOne 模块,引入结构重参数化,提高模型检测效率 本文记录的是基于MobileOne的YOLOv11骨干网络改进方法研究。MobileOne的基础模块通过重参数化,。在将其替换YOLOv11的骨干网络后,实现模型轻量化。 阅读详情

相关推荐

地理空间智能体(GI Agent)

地理空间智能体(Geospatial Intelligence Agent, GI Agent)是AI Agent技术与地理信息系统(GIS)深度融合的产物。其核心是以大型语言模型(LLM)为驱动,通过自然语言理解、任务分解和工具调用能力,实现地理空间任务的自动化执行。​关键特性​自主性​:独立规划任务流程(如空间数据检索、分析、可视化);​交互性​:支持自然语言对话交互,替代传统图形界面操作;​扩展性​:灵活集成第三方工具和API,支持跨平台协作。

百态·数智思维 | 聚焦大数据、量化与未来AI 2033

Lucene介绍与使用

1、了解搜索技术 1.1 什么是搜索 简单的说,搜索就是搜寻、查找,在IT行业中就是指用户输入关键字,通过相应的算法,查询并返回用户所需要的信息。 1.2 普通的数据库搜索 类似:select * from 表名 where 字段名 like ‘%关键字%’ 例如:select * from article where content like ’%here%’ 结果: where here...

但行好事 莫问前程 9万+

STM32F407+HAL库+W5500实现TCP通讯 个人项目总结

推荐阅读此博客 cv即可成功首先需要一个可以进行串口调试的工程,方便进行调试。1.在W5500官网移植库文件重点是Ethernet这个文件夹将里面的 socket.c,socket.h,wizchip_conf.c,wizchip_conf.h,还有根据W5500文件夹里的w5500.c和w5500.h移植到自己的工程里面。然后再创建一个.c和.h文件 我的叫w5500_port_hal.c 和w5500_port_hal.h 记得将.h文件链接到工程里。

a234abr的博客 2248

Lucene入门及操作详解

1 什么是全文检索 1.1 数据分类 我们生活中的数据总体分为两种:结构化数据和非结构化数据。 结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。 非结构化数据:指不定长或无固定格式的数据,如邮件,word 文档等磁盘上的文件 1.2 结构化数据搜索 常见的结构化数据也就是数据库中的数据。 在数据库中搜索很容易实现,通常都是使用 sql语句进行查询,而且能很快的得到查询结果。 为什么数据库搜索很容易? 因为数据库中的数据存储是有规律的,...

qq_45441466的博客 1万+

飞凌OK3588-C Linux R4系统下MIPI YUV摄像头CSI尺寸错误排查与极性适配方案

本文详细介绍了在飞凌OK3588-C平台的Linux R4系统下调试MIPI YUV摄像头时遇到的'csi size err'错误排查与极性适配方案。通过分析信号极性、驱动参数调整及FPGA协同调试,提供了从硬件检测到系统级调试的完整解决方案,帮助开发者快速解决类似问题。

bean的博客 259

TSMC65nm工艺下Virtuoso仿真gm-id曲线的保姆级教程(含ADE设置详解)

本文提供了一份在TSMC 65nm工艺下使用Cadence Virtuoso绘制gm-id曲线的详细教程。内容涵盖从理解gm/id方法学、搭建仿真环境、深度解析ADE设置,到运行DC仿真、提取数据并生成对数坐标曲线的完整流程。教程重点解析了Virtuoso ADE中的关键设置与常见避坑点,旨在帮助模拟集成电路设计初学者快速掌握这一核心设计工具,为高性能电路设计奠定基础。

grpc6streamer的博客 1174

全文检索功能(Lucene)

Lucene:全文检索技术 概念:先创建索引,然后再对索引搜索的过程就是全文检索技术; 索引一次创建多次使用,表现为每次的查询速度很快。 索引:一个为了提高查询速度,创建某种数据结构的集合。 数据的分类: 结构化数据:格式、长度、数据类型固定 例如数据库的数据, 非结构化数据:格式、长度、数据类型不固定 word文档、pdf文档等等 数据的查询 结构化数据的查询:sql语句 简单、查询速度快 非结构化数据:查询某个关键字? 条件复杂,查询难度大 顺序扫描法 字符串匹配(顺序扫

weixin_44641846的博客 1394

金融级IT架构-数字银行的云原生架构解析

最近断断续续花了差不多2到3周的时间阅读完由电子工业出版社出版的《金融级IT架构:数字银行的云原生架构解密》的这本书,作者是作者是网商银行技术编委会。 本书契合了当前银行业分布式架构转型趋势,内容是经过实践检验的领先技术介绍了网商银行IT技术架构演进路线,涵盖了分布式、单元化、弹性混合云、云原生多个基础架构领域,同时介绍了技术风险、安全可信、业务架构等多方面的技术实践经验。 对于这本书实际很早搜索云原生相关书籍的时候就搜索到,但是一看标题是金融IT架构方面的因此没有引起太多的重视,后面由华章...

年少有为 4064

Lucene概述

Lucene搜索库

懒猫的脚印 1万+

视觉惯性SLAM系列——ORB-SLAM3的整体介绍及各个线程的功能(五)

跟踪线程(Tracking Thread)作用:负责处理每一帧图像,进行相机位姿的估计和定位。它首先执行与前一帧图像的特征匹配,然后通过仅运动(motion-only)BA(Bundle Adjustment)优化位姿。如果跟踪失败,它会尝试在所有地图中进行重定位。此外,跟踪线程还负责决定何时插入新的关键帧,以及何时将关键帧从局部地图中移除。详细介绍见局部建图线程(Local Mapping Thread)作用:管理局部地图,向活跃地图添加关键帧和点,移除多余的关键帧和点。

曾经也曾立志 1004

【ARM CoreLink 系列 5.3 -- CI-700 SLC memory 系统组件详细介绍】

在 CI-700 系统级缓存(SLC)内存系统中,HN-F 节点负责管理缓存一致性和数据传输。每个 HN-F 节点可以发送三种类型的 Snoop 请求,以确保系统中多核处理器和缓存之间的一致性。CI-700 中的系统级缓存(SLC)内存系统通过 HN-F 节点支持 TrustZone® 技术。以下是 CI-700 支持的 SN 类型以及配置方法的简要介绍。ARM CI-700 系统级缓存(SLC)是一个分布式、主要排他性(mostly exclusive) 的最后一级缓存,集成在 HN-F 节点内。

CodingCos的博客 898

Lucene解析 - 基本概念

前言 Apache Lucene是一个开源的高性能、可扩展的信息检索引擎,提供了强大的数据检索能力。Lucene已经发展了很多年,其功能越来越强大,架构也越来越精细。它目前不仅仅能支持全文索引,也能够提供多种其他类型的索引方式,来满足不同类型的查询需求。 基于Lucene的开源项目有很多,最知名的要属Elasticsearch和Solr,如果说Elasticsearch和Solr是一辆设计精美、性能卓越的跑车,那Lucene就是为其提供强大动力的引擎。为了驾驭这辆跑车让它跑的更快更稳定,我们需要对它的引

java_kider的博客 519

[PCIe5.0] 2.2.7.1 TPH Rules

TPH 机制通过硬件提示优化数据流,适用于高性能计算和存储场景。

系统固件工程师 349

Lucene 概念,定义应用场景

Lucene 概念,定义应用场景

1952

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

lucene的几个重要概念

<br /> lucene用到一些概念,了解它们的含义,有利于下面的讲解。 <br /><br />        3.1 analyzer <br />        Analyzer是分析器,它的作用是把一个字符串按某种规则划分成一个个词语,并去除其中的无效词语,这里说的无效词语是指英文中的“of”、 “the”,中文中的“的”、“地”等词语,这些词语在文章中大量出现,但是本身不包含什么关键信息,去掉有利于缩小索引文件、提高效率、提高命中率。 <br />        分词的规则千变万化,但目的只有一

心灵净土 955

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Lucene及概念介绍

当我们的查询设计到多个小块时,查询效率会降低,因此需要合并多个小块来提升查询效率,这个操作就是索引合并。查询语句主要分为term和操作符两部分,term就是分词的匹配项,而操作符用于描述本次查询的多个term之间的匹配关系。原始Document拆分成倒排索引和新的查询语句拆分成允许被搜索的选项的操作都会涉及到”分析“分词就是把文本进行分割,形成多个小的Item,建立索引就是将分词和原数据建立关联关系。:字段,是key-value格式的数据,对比实体类的字段。分词器:将文本进行分割,拆分成索引的工具。

『程序员·小李』的博客 1054

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Lucene基本概念

全文检索 Lucene&Solr(1) Lucene的基础知识 1、案例分析:什么是全文检索,如何实现全文检索 2、Lucene实现全文检索的流程 a)创建索引 b)查询索引 3、配置开发环境 4、创建索引库 5、查询索引库 6、分析器的分析过程 a)测试分析器的分词效果 b)第三方中文分析器 7、索引库的维护 a)添加文档 b)删除文档 c)修改文档 8、Lucene的高级查询Lucen...

染小柒的博客 349

lucene(一) lucene一些概念的理解

1 lucene简介 1.1 什么是lucene     Lucene是一个全文搜索框架,而不是应用产品。因此它并不像www.baidu.com 或者google Desktop那么拿来就能用,它只是提供了一种工具让你能实现这些产品。         在全文检索工具中,全部都由三个部分组成:索引部分、分词部分、搜索部分 2 lucene的工作方式         lucene提供

王帆的专栏 2918

了解lucene的基本概念

lucene是什么 下图是一个很好的说明: 1、lucene是构建索引、查询、高亮、拼写检查的类库。 2、它不是一个爬虫。 3、不提供分布式的索引。 lucene全文搜索处理流程 lucene的索引和查询 这是用4.6版本构建的lucene构建索引和查询的示例: public static void main(String[] a

mojolang 869

Lucene分词基本概念

Lucene分词基本概念 Lucene接收纯文本,分词之后写入索引。 分词就是将一段文本拆分成多个词(Token),并产生与每个词相关联的一些属性(Attribute)的过程。 TokenStream、PositionIncrement和PositionLength Lucene用TokenStream来表示分词的结果。一般情况下,TokenStream可以看做是一个顺序的Token流。 例如,有...

zx的博客 935

Lucene 概念总结

1 lucene简介 1.1 什么是lucene Lucene是一个全文搜索框架,而不是应用产品。因此它并不像http://www.baidu.com/ 或者google Desktop那么拿来就能用,它只是提供了一种工具让你能实现这些产品。 1.2 lucene能做什么 要回答这个问题,先要了解lucene的本质。实际上lucene的功能很单一,说到底,就是你给它若干个字符串,然后它为你提供...

zhangzhanlei1988的博客 160

Lucene基础之核心概念及数据类型

原文链接:Cs XJH’s Blog 接触Lucene也有一段时间了,刚接触时应用起来难度不高,但里面的很多东西还是陌生的。经过一段熟悉之后,觉得大致了解了一些主要的东西,于是写篇博客记录下。 三个概念 Lucene和数据库类似,这里也有字段的概念。不同之处在于,这里的字段之间除了数据类型不同之外,对于索引、分词、存储的选择也各有不同。 索引 如果字段需要搜索,那么应该建立索引 分词 只有字...

AmbHowie的博客 504

lucene和ElasticSearch基本概念

lucene基本概念 1.索引(Index) 对应一个倒排表,一个检索的基本单位,在lucene中就对应一个目录。 2.段(Segment) 一个索引可以包含多个段,段与段之间是独立的,添加新文档可以生成新的段,不同的段可以合并。段是索引数据存储的单元。 3.文档(Document) 文档是我们键索引的基本单位,不同的文档是保存在不同的段中的,一个段可以包含多篇文档。 新添加的文档是

baibaichenchen的博客 3801

Lucene4基础概念-Elasticsearch深入

学习Lucene是为了更深入搜索,学习Lucene4是为了弄懂ES中没有解释的疑问,等看完Lucene,才发现,搜索的核心原来都是Lucene,Elasticsearch只不过是包在Lucene外面的一层皮。   Lucene是一个搜索引擎包,它并非一个像tomcat一样的产品。它衍生出了solr和elasticsearch。当然,我学习的是后者。solr是apache孵化的一个搜索引

donlian的专栏 950

lucene 核心概念及入门

lucene Lucene介绍及核心概念 什么是Lucene Lucene是一套用于全文检索和搜索的开放源代码程序库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程序接口,能够做全文索引和搜索,在Java开发环境里Lucene是一个成熟的免费开放源代码工具;就其本身而论,Lucene是现在并且是这几年,最受欢迎的免费Java信息检索程序库。 lucene可以做什么 L...

weixin_30530939的博客 178

elasticsearch和lucene的关系以及elasticsearch的核心概念

1、lucene和elasticsearch的前世今生 2、elasticsearch的核心概念 3、elasticsearch核心概念 vs. 数据库核心概念 ----------------------------------------------------------------------------------------------------------------

千里之行始于足下 1万+
上一篇: Docker基础(从一脸懵到入门)
下一篇: Docker中安装Mysql
Crazy Code Farmer
博客等级 码龄10年 315粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值