LuceneInAction(第2版)学习笔记——第一章 初识Lucene
来源:互联网 发布:tower for mac 编辑:程序博客网 时间:2024/05/17 22:06
Lucene: 是一个搜索类库,而不是完整的程序
A. 索引组件
根据原始内容创建索引
Raw Content : Acquire Content --> Build Document --> Analyze Document(*) --> Index Document(*) ==> Index(*)
原始内容 : 获取内容(提取文本) --> 建立文档 --> 分析文档 --> 文档索引 ==> 索引
文档索引=向索引添加文档
***** 索引过程中的核心类
Document类: 一个Lucene文档可以包含多个域Field
Analyzer(*****)类: 分析器 分析文档,如果被索引内容不是纯文本文件,则需要先将其转换为文本文档
分析器是一个抽象类,Lucene提供了几个类实现它
分析器的分析对象是文档,该文档包含一些分离的能被索引的域
IndexWriter类: 索引写入器,它负责创建新索引或打开已有索引,以及向索引中添加、删除、更新被索引文档的信息
IndexWrite 提供对索引文件的写入操作,但不能用于读取或搜索索引
Directory类: 索引文件的存储路径
B. 搜索组件
在索引中搜索单词,找到包含该单词的文档
Search UI : Build Query(*) --> Run Query(*) --> Render Results(*)
用户搜索界面: 建立查询 --> 运行查询 --> 展现结果
*****搜索过程中的核心类
IndexSearcher类: 搜索器,用于搜索由IndexWriter类创建的索引,可以将其看作一个以只读方式打开索引的类
它需要利用Directory实例来掌控前期创建的索引,然后才能提供大量的搜索方法
搜索器中有一些方法在它的抽象父类Searcher中实现
最简单的搜索方法是将单个Query对象和int topN计数作为该方法的参数,并返回一个TopDocs对象
Term抽象父类: Term对象是搜索功能的基本单元;与Field对象类似,Term对象包含一对字符串元素,域名和单词(或域文本值)
Term对象还与索引操作有关。但Term对象是由Lucene内部创建的,在索引阶段不需要了解它们。
在搜索过程中,可以创建Term对象,并和TermQuery对象一起使用。
Directory dir = FSDirectory.open(new File("/tmp/index"));
IndexSearcher searcher = new IndexSearcher(dir);
Query q = new TermQuery(new Term("content", "lucene"));//TermQuery对象是从抽象父类Query中派生而来
TopDocs hits = searcher.search(q, 10);
searcher.close();
Query抽象父类:有很多查询子类,TermQuery/BooleanQuery/PhraseQuery/PrefixQuery/PhrasePrefixQuery
/TermRangeQuery/NumericRAngeQuery/FilteredQuery/SpanQuery
TermQuery类: 是Lucene提供的最基本的查询类型,也是简单查询类型之一,它用来匹配指定域中包含特定项的文档
TopDocs类: 就一个简单的指针容器,一般指向前N个排名的搜索结果,搜索结果即匹配查询条件的文档
C. 其它模块
管理界面: Administration Interface
分析界面: Analytics Interface
搜索范围: Scaling 分布式索引和分布式查询时,各节点的范围
D. 附加组件
中文分词组件
中文短语查询组件
分词: 索引时对域进行分词,搜索时对关键字进行分词,分词后得到语汇单元。
总的来说,搜索比索引更重要,因为索引文件只被创建一次,却要被搜索多次。
- LuceneInAction(第2版)学习笔记——第一章 初识Lucene
- LuceneInAction(第2版)学习笔记——第四章 Lucene的分析过程
- LuceneInAction(第2版)学习笔记——目录
- LuceneInAction(第2版)学习笔记——第二章 构建索引
- LuceneInAction(第2版)学习笔记——第三章 为应用程序添加搜索功能
- LuceneInAction(第2版)学习笔记——第五章 高级搜索技术
- 第一章:初识lucene
- Lucene读书笔记——1. 初识Lucene
- Java学习笔记—第一章
- 《Apache Cocoon2.2 学习》第一章:初识cocoon
- 实战 Lucene,第 1 部分: 初识 Lucene
- 实战 Lucene,第 1 部分: 初识 Lucene
- 实战 Lucene,第 1 部分: 初识 Lucene
- 实战 Lucene,第 1 部分: 初识 Lucene
- 实战 Lucene,第 1 部分: 初识 Lucene
- 实战 Lucene,第 1 部分: 初识 Lucene
- 实战 Lucene,第 1 部分: 初识 Lucene
- 实战 Lucene,第 1 部分: 初识 Lucene
- 1000以内的完数和(第十周上机任务)
- 找100-999之间的“水仙花数”。
- IOS用UINavigationController实现在两个页之间导航(下)
- 我来了
- uva_108 - Maximum Sum
- LuceneInAction(第2版)学习笔记——第一章 初识Lucene
- jdk安装(总是忘记。。)
- data node 参数 MaxNoofConcurrentOperation
- LuceneInAction(第2版)学习笔记——第二章 构建索引
- 很动人的伤感爱情故事_等待着,寻找着久别的恋人
- 1000以内偶数和程序报告
- 函数运行到结尾 _BLOCK_TYPE_IS_VALID(pHead->nBlockUse
- LuceneInAction(第2版)学习笔记——第三章 为应用程序添加搜索功能
- 求1/3-3/5+5/7...-19/21的和