lucene

参考:Lucene5.5学习(2)-Lucene全文检索的基本原理-腾讯云开发者社区-腾讯云

1、lucene是一个搜索引擎工具包,不是一个完整的搜索引擎。

2、名称解释:

Document:文档

Field:文档的某个属性

Analyzer:分词器,把分词内容交给IndexWriter建立索引

IndexWriter:把Document写入索引

Directory:索引存储位置。两个实现:FSDirectory & RAMDirectory

FSDirectory:一个存储在文件系统中的索引的位置

RAMDirectory:一个存储在内存当中的索引位置

Query:把用户输入的查询字符串封装成Lucene能识别的query,实现:TermQuery,BooleanQuery,PrefixQuery。

IndexSearcher:在建立好的索引上进行搜索。以只读的方式打开一个索引,可以多个IndexSearcher实例在一个索引上进行操作。

Hits:保存搜索结果。

Tokenizer:分词组件

Document Frequency:文档频次,多有文件包含Term

Frequency:词频率,文件中包含了几个此Term。

Stemming:词干提取

Lemmatization:词形还原

3、全文搜索相对于顺序扫描的优势之一:一次索引,多次使用。

4、创建索引过程

1)tokenizer将文档分成一个一个单独的单词;去除标点符号;去除停词(stopword),得到词元Token。

2)将Token传给语言处理组件Linguistic Processor,lowercase,stemming,lemmatization,得到词Term。

3)将Term传给索引组件Indexer,创建一个字典,然后排序,合并相同的Term,成为文档倒排Posting List链表。

分词组件(Tokenizer),都有一个停词(stop word)集合。

5、索引搜索过程:

1)用户输入

2)对输入进行词法分析,语法分析,语言处理。

词法分析:识别单词和关键字,

语法分析:语法规则形成一颗语法树。

语言处理:同索引创建过程。

3)搜索得到文档:反向索引表中找到关键字的文档链表,合并链表,

4)根据文档和查询语句的相关性,对结果进行排序。

A:找出词(Term)对文档的重要性的过程称为计算词的权重(Term weight)的过程。

B:判断词(Term)之间的关系从而得到文档相关性的过程应用一种叫做向量空间模型的算法(Vector Space Model)。

=》计算词的权重Term Weight

两个关键因素:Term Frequency & Document Frequency

Term Frequency ,tf越大说明越重要;

Document Frequency,df越大说明越不重要,太普通。

w=tf * log(n/df)

w:权重

n:总文档

=》向量空间模型的算法

文档中Term的权重,查询语句中term的权重,根据公式计算

6、索引文件结构

1)Index索引:一个索引放到一个文件夹中,所有文件构成一个Lucene索引。

2)Segment段:一个索引包含多个段,段与段是独立的,添加新的文档可以生成新的段,不同改的段可以合并。Segments.gen和segments_x是段的元数据文件,保存了段的属性信息。

3)Docment文档:建立索引的基本单位。

4)Field域:不同类型信息,比如标题,时间,正文,作者等

5)Term词,索引的最小单位,经过词法分析和语言处理后的字符串

Segments_3:保存索引包含多少段,每个段包含多少文档。

Write.lock:防止多个IndexWriter同事写到一份索引文件中。

7、正向索引,反向索引

正向索引:Index->segment->Docment->Field->Term

反向索引:Term->Document

8、加权重

更高版本不支持在生成索引时增加文档或者域的权重,而是在查询时设置查询域权重。

相关推荐
晚霞的不甘42 分钟前
Flutter for OpenHarmony《淘淘购物》主页点击跳转功能详解:从 UI 响应到页面导航的完整实现
前端·flutter·ui·搜索引擎·前端框架·交互
CCPC不拿奖不改名1 小时前
提示词工程(Prompt Engineering)全体系知识手册
大数据·人工智能·python·搜索引擎·prompt
小北方城市网3 小时前
Elasticsearch 分布式检索生产级优化:从索引设计到查询性能
java·大数据·运维·redis·分布式·elasticsearch·搜索引擎
大志哥1233 小时前
使用logstash和elasticsearch实现日志链路(一)
大数据·elasticsearch·搜索引擎
金士镧(厦门)新材料有限公司1 天前
氧化铈:科技与环保的关键材料
科技·安全·全文检索·生活·能源
LaughingZhu1 天前
Product Hunt 每日热榜 | 2026-01-26
大数据·人工智能·经验分享·搜索引擎·产品运营
羑悻的小杀马特1 天前
Elasticsearch + Kibana 实战指南:从安装部署到 C++ 客户端封装,解锁搜索引擎开发核心技能
c++·elasticsearch·搜索引擎·kibana
历程里程碑2 天前
双指针2--盛水最多的容器
大数据·数据结构·算法·leetcode·elasticsearch·搜索引擎·散列表
不会c+2 天前
Elasticsearch入门
大数据·elasticsearch·搜索引擎
Elastic 中国社区官方博客3 天前
Elasticsearch:上下文工程 vs. 提示词工程
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索