Lucene笔记23-Lucene的使用-简单复习索引、检索和分词

本文详细介绍了Lucene搜索引擎中的关键概念和技术,包括索引、检索和分词过程中的核心类,如IndexWriter、Analyzer、IndexReader等,以及如何使用这些类实现高效的文档索引和查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、索引

索引过程中的核心类:IndexWriter、Directory、Analyzer、Document、Field。

IndexWriter用来写索引。

Directory用来定义索引的目标位置是硬盘上还是内存中。

Analyzer用来分词,常用的分词器有:SimpleAnalyzer,WhitespaceAnalyzer,StandardAnalyzer,StopAnalyzer。分词器里面有个重要的方法tokenStream(),用来获取tokenStream流,这个流中存储了分词的各种信息。首先经过Tokenizer,将待分词字符串拆分成一个个的语汇单元,交给一些列的TokenFilter对这些语汇单元进行处理。

Document用来存储索引信息。

Field用来指定域的名称,一个Document中有多个Field。

二、检索

搜索过程中的核心类:IndexReader、IndexSearcher、Term、Query、TermQuery、TopDocs、ScoreDoc。

IndexReader用来读取索引信息,因为它的开启和关闭比较耗时,所以建议设计成单例的模式。使用open()方法来打开一个IndexReader对象,或者使用openIfChanged()打开一个更新的IndexReader对象。

IndexSearcher用来查询索引,我们通过IndexReader来获取IndexSearcher。

Term用来指定某个域为某个值,它是检索过程中最小的单位,。

Query用来查询,它下面有很多的子类,

TermQuery用来对字符串进行查询,是Query的子类。

TopDocs用来存储IndexSearcher对象查询到的文本信息。

ScoreDoc用来提供一些属性,比如scoreDoc.doc表示文档的docID,将这个ID传给IndexSearcher对象的doc()方法,就可以获得Document对象了,有了Document对象之后,就可以使用get获取其中的值了,其中Store.YES的就会被保存,Store.NO就不会被保存了。

三、分词

分词过程中的核心类:Analyzer、TokenStream、Tokenizer、TokenFilter。

在分词过程中,很多数据是通过Attribute来保存的。如果要获取某个Attribute,就要在遍历流之前,将Attribute添加到流中。了解了这些属性之后,根据原理写一个停用词分词器和同义词分词器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值