Lucene入门

缺乏、安全感 2022-08-25 09:12 219阅读 0赞

#

Lucene和Application之间的关系

a5653008247401bbaa6457dc.jpg

一个简单的搜索应该程序:

假设我们的电脑的目录中含有很多文本文档,我们需要查找哪些文档含有某个关键词。为了实现这种功能,我们首先利用 Lucene 对这个目录中的文档建立索引,然后在建立好的索引中搜索我们所要查找的文档。通过这个例子读者会对如何利用 Lucene 构建自己的搜索应用程序有个比较清楚的认识。

建立索引:

Lucene提供了5个基础的类,他们分别是Document、Field、IndexWriter、Analyzer、Directory

Document:这个是用来描述文档的,可以是一个HTML页面,一封电子邮件,一个文本文件。一个Document对象由多个Field构成的,可以把Document想象成数据库中的一个字段,而Field相当于一个字段(一个Field集合)

Field:Field对象是描述文档的属性的,比如一封电子邮件的内容和标题可以用两个Field描述(Filed的值是文本类型的,如果是其它类型的,则要转换成文本,如日期、数字)

Analyzer:在一个文档被索引之前,需要对文档进行分词处理,这个就由Analyzer来做,Analyzer是一个抽象类,它有不同的实现,针对不同的语言选择不同的Analyzer,Analyzer把分词后的类容交给IndexWriter来建立索引

IndexWriter:是Lucene用来创建索引的一个核心类,它的作用是把一个个Document对象加到索引中来

Directory:这个类代表了 Lucene 的索引的存储的位置,这是一个抽象类,它目前有两个实现,第一个是 FSDirectory,它表示一个存储在文件系统中的索引的位置。第二个是 RAMDirectory,它表示一个存储在内存当中的索引的位置(索引库的位置

搜索文档

利用 Lucene 进行搜索就像建立索引一样也是非常方便的。在上面一部分中,我们已经为一个目录下的文本文档建立好了索引,现在我们就要在这个索引上进行搜索以找到包含某个关键词或短语的文档。Lucene 提供了几个基础的类来完成这个过程,它们分别是呢 IndexSearcher, Term, Query, TermQuery, Hits. 下面我们分别介绍这几个类的功能。

Query

这是一个抽象类,他有多个实现,比如 TermQuery, BooleanQuery, PrefixQuery. 这个类的目的是把用户输入的查询字符串封装成 Lucene 能够识别的 Query。

Term

Term 是搜索的基本单位,一个 Term 对象有两个 String 类型的域组成。生成一个 Term 对象可以有如下一条语句来完成:Term term = new Term(“fieldName”,”queryWord”); 其中第一个参数代表了要在文档的哪一个 Field 上进行查找,第二个参数代表了要查询的关键词。

TermQuery

TermQuery 是抽象类 Query 的一个子类,它同时也是 Lucene 支持的最为基本的一个查询类。生成一个 TermQuery 对象由如下语句完成: TermQuery termQuery = new TermQuery(new Term(“fieldName”,”queryWord”)); 它的构造函数只接受一个参数,那就是一个 Term 对象。

IndexSearcher

IndexSearcher 是用来在建立好的索引上进行搜索的。它只能以只读的方式打开一个索引,所以可以有多个 IndexSearcher 的实例在一个索引上进行操作。

Hits

Hits 是用来保存搜索的结果的。

发表评论

表情:
评论列表 (有 0 条评论,219人围观)

还没有评论,来说两句吧...

相关阅读

    相关 lucene入门

    Lucene是apache下的一个开放源代码的全文检索引擎工具包。提供了完整的查询引擎和索引引擎,部分文本分析引擎。Lucene的目的时为软件开发人员提供一个简单易用的工具包,

    相关 Lucene入门

    > lucene 是一个全文检索引擎的架构,提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。 创建索引库 俩种储存方式: 第一种: //将索引存

    相关 Lucene的使用,Lucene入门

    本文主要介绍几个方面,为什么使用Lucene使用场景,解决的问题,Lucene的入门使用,以及Lucene一些语法(增删改查)。 一简述Lucene概念:磁盘上的一些邮件,文

    相关 lucene入门(三)

    前面两篇文章介绍了如何创建索引和搜索索引,理解了的话基本上就已经可以使用Lucene进行简单的全文检索了。学习完lucene之后,我个人有一个小小的demo,只是为了练习,在这