Field也许算是Lucene索引阶段最重要的类,它是存储被索引值的类。当创建Field时,Lucene为其提供了诸多选项供你选择。
1. 索引
索引选项(Field.Index.*)用来控制域中的文本如何通过反向索引搜索。共有如下选项:
1) Index.ANALYZED
最常用的设置,采用分词策略,将原文拆分成词元(通常用在正文、标题、摘要等域)
2) Index.NOT_ANALYZED
不采用分词策略,即把原文当作一整个词元对待(通常用在URL、文件路径、日期等域)
3) Index.ANALYZED_NO_NORMS
它是Index.ANALYZED的高级变种,在索引文件中不存储规则信息,比如一些优先策略
4) Index.NOT_ANALYZED_NO_NORMS
类似上面,它是Index.NOT_ANALYZED的高级变种
5) Index.NO
指定为此选项的域将不能被搜索到
2. 存储
存储选项(Field.Store.*)用来决定是否将域值存储起来。共有如下选项:
1) Store.YES
2) Store.NO
标识为YES的域值将会被存储在index中,搜索阶段可以用IndexReader检索到它。此选项对于需要在查询结果中显示的域非常有用(如URL、标题等)。
Lucene中包含一个非常有用的工具类,CompressionTools,它提供了压缩和解压byte数组的方法。其内部调用了java的内置java.util.Zip包中的方法。在存储之前你可以利用它先将内容压缩,但是压缩会降低索引和搜索的效率,对于很小的域值,通常并不值得去压缩。
3. 检索词向量
这个稍微麻烦一些,不展开了。选项如下:
1) TermVector.YES
2) TermVector.WITH_POSITIONS
3) TermVector.WITH_OFFSETS
4) TermVector.WITH_POSITIONS_OFFSETS
5) TermVector.NO
需要注意的是,如果设置了Index.NO, 则必须是TermVector.NO. 即前四个选项必须建立在域值可索引的基础上。
4. Field的构造器
Field的构造器有很多:
5. 小结
组合以上选项,主要有如下用法:
Index |
Store |
TermVector |
常见用处 |
NOT_ANALYZED |
YES |
NO |
文件名、URL、电话、日期等 |
ANALYZED |
YES |
WITH_POSITIONS_OFFSETS |
标题、摘要 |
ANALYZED |
NO |
WITH_POSITIONS_OFFSETS |
正文 |
NO |
YES |
NO |
分类、数据库主键等只用来在结果中显示的 |
NOT_ANALYZED |
NO |
NO |
隐藏的关键字 |
分享到:
相关推荐
《Lucene In Action中文版第二章》主要涵盖了Lucene搜索引擎库的基础知识和核心概念,这是一款广泛应用于全文检索、信息检索领域的开源Java库。Lucene的强大之处在于其高效性和灵活性,它能帮助开发者迅速构建出具备...
2. **第二章:构建第一个应用** - **环境搭建**:介绍如何配置Java环境,以及如何获取和导入Lucene的库。 - **创建索引**:讲解了如何使用Lucene API对文本数据进行分析、分词和建立索引。 - **基本搜索**:展示...
- **无法随机访问**:不像顺序存储结构,链式存储不能直接通过索引访问元素,只能顺序遍历。 总结来说,链式存储结构是一种灵活的数据组织方式,尤其适用于需要频繁进行插入和删除操作的情况。理解和掌握链式存储...
#### 第二章:查询DSL进阶 - **Lucene评分过程**:解释文档如何根据相关性进行评分。这涉及到TF-IDF(Term Frequency-Inverse Document Frequency)算法以及其他评分机制。 - **查询改写**:介绍为何需要对原始查询...
#### 第二章:入门实例 - **工作原理** Lucene的工作流程主要包括以下几步: 1. **文档分析**:将文档分割成一系列词汇单元(token),这一过程通常由分析器(analyzer)完成。 2. **建立索引**:为每个文档及其...
第二章通常涉及的是**程序设计基础**: 1. **命令与语句**:学习VFP的基本命令,如显示(DISPLAY)、输入(INPUT)等,以及流程控制语句(如IF...THEN...ENDIF,FOR...NEXT,WHILE...WEND等)。 2. **函数和过程**:...
第二章“Lucene应用”则会进一步深入实践,可能涵盖: 1. **全文检索**:演示如何实现高效的全文检索功能,包括关键词高亮和模糊匹配。 2. **多字段搜索**:讲解如何同时在多个字段上进行搜索,并进行复合条件的...
**第二章:运行环境** - **.NET结构**:介绍了.NET框架的整体架构,包括但不限于CLR、基础类库(BCL)以及.NET框架所提供的服务和功能。 - **公用语言运行时环境与公用语言规范**: - 公用语言运行时(CLR):是...
##### 第二章:运行环境 **2.1 .NET结构** - 解释.NET框架的整体结构,包括: - **公共语言运行时(CLR)**:负责执行代码、内存管理和安全验证等功能。 - **基础类库(BCL)**:提供了一系列预定义的类和接口,...
### MapX教程第九章:专题图详解 #### 概述 MapX教程的第九章深入探讨了专题图的制作与应用,这是一种强大的数据分析与可视化工具,尤其适用于地理信息系统(GIS)领域。通过将数据转化为直观的图形展示在地图上,...
### 第二章 索引建立 #### 2.1 创建 Directory 和 Writer - `Directory`用于指定索引的存储位置,如磁盘或内存。 - `IndexWriter`创建时需传入`Directory`,用于写入索引。 #### 2.2 创建文档 - `Document`对象...
{field: 'id', title: '编号', sortable: true, checkbox: true, width: 100}, ``` 这个示例中,我们定义了一个名为 "id" 的列,标题为 "编号",可以排序,并且显示复选框。同时,我们还设置了列的宽度为 100 像素。...
中文名: Active Server ...第二章 VBScript与Active Server Pages 第三章 ASP应用系统所使用的物件 第四章 利用ADO物件与资料库连结 第五章 建立伺服端的ActiveX COM物件 第六章 Visual Basic与Active Server Pages
第二节 信息检索的目的和作用 1.通过科技文献检索能够打开人类知识宝库的钥匙。 2.通过科技文献检索能使科技工作者及时把握科技发展的动态和趋势。 3.通过科技文献检索能有助于开拓知识面,改善知识结构。 4....
#### 第二章 Worksheet(工作表)对象 在Excel VBA编程中,对于工作表的操作占据了非常重要的地位。无论是数据处理还是自动化任务,都需要通过各种方法来引用和操作工作表。本章节主要介绍如何在VBA中高效地使用和...
本章主要介绍了数据库和表的基本概念,以及如何在数据库中操作和管理数据。以下是基于提供的PPT内容的详细知识点讲解: 1. **数据库和表**: - **数据库**:是一个存储特定主题或目标信息的集合,由一个或多个表...
第5章 索引构造 248 计算模型 251 索引构造方法概览 252 5.1 基于内存的倒排 253 5.2 基于排序的倒排 256 5.3 索引压缩 261 压缩临时文件 261 多路归并 264 原地多路归并 265 5.4 压缩的内存内倒排.. 271 ...
##### 第二章:运行环境 —— 全面了解.NET - **2.1 .NET结构** - .NET Framework包括两大部分:公共语言运行时(CLR)和.NET Framework类库。 - CLR提供了执行环境,支持多语言开发,并提供内存管理、线程管理和...