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、加权重

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

相关推荐
YANZ22216 分钟前
亚马逊绿标(CPF):从环保认证到跨境流量新引擎
java·大数据·人工智能·搜索引擎·百度
Elastic 中国社区官方博客42 分钟前
Elasticsearch percolator 用于电商搜索治理:将模糊查询转换为可控的检索策略
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
逸Y 仙X1 小时前
文章二十二:ElasticSearch EQL事件查询语言
java·大数据·elasticsearch·搜索引擎·全文检索
南棱笑笑生2 小时前
20260505在小米13Ultra下给微信通话录音
搜索引擎
摇滚侠2 小时前
ElasticSearch 在电商项目的作用 全文检索 自动补全 聚合查询 按距离排序
大数据·elasticsearch·全文检索
xiangzhihong83 小时前
Claude Code系列教程之Claude Code并行任务
大数据·elasticsearch·搜索引擎
weixin_446260854 小时前
架构白皮书:搜索引擎底层逻辑逆向重构与内容分发网络优化实践
搜索引擎·重构·架构
南棱笑笑生6 小时前
20260505将搜狐ifox格式转换为常见的mp4格式
搜索引擎
历程里程碑16 小时前
4 Git远程协作:从零开始,玩转仓库关联与代码同步(带实操代码讲解)
大数据·c++·git·elasticsearch·搜索引擎·gitee·github
南棱笑笑生17 小时前
20260504关闭右上角显示的fps参数等信息【NVIDIA显卡】
搜索引擎