3.5 实例讲解Lucene索引的结构设计
2017-05-09 00:34
375 查看
3.2节我们已经运行了一个Lucene建立索引的小程序,这一节我们就以这个小程序为例讲解一下Lucene建立索引的过程。
View Code
Field是Lucene建立索引的最小单元,相当于关系表中的属性。一个Document可以包含多个Field。Document添加Field只需调用Add()方法。
Lucene为我们提供了多种类型的Field,比如IntField, LongField, StringField, TextField等。程序实例中,我们用到了StringField和TextField。我们有必要来了解一下这两种Field的区别,因为这关系到倒排表的建立:
StringField:对域进行索引,但不进行分词,将域值作为单一的语汇单元,适用于索引那些不能被分解的域值,如URL,文件路径,电话号码等。参考StringField文档。
TextField: 对域既索引又分词,Lucene会对这个域进行分词并建立倒排表。参考TextField文档。
5.添加Document。
对IndexWriter对象调用addDocument方法将文档添加到索引库中。
6.关闭IndexWriter对象。
把所有的文档都添加到索引库中后,关闭Indexwriter对象。
ps:这篇博客以文集为例形象生动地说明了IndexWriter,Document和Field的关系,大家不妨看一看:例子
关于Lucene的具体索引步骤就介绍到这里~~
.
1 document = new Document(); 2 document.add(new StringField("path", f.getName(),Field.Store.YES)); 3 System.out.println(file.getName()); 4 document.add(new StringField("name", file.getName(),Field.Store.YES)); 5 InputStream stream = Files.newInputStream(Paths.get(file.toString())); 6 document.add(new TextField("content", new BufferedReader(new InputStreamReader(stream, StandardCharsets.UTF_8))));//textField内容会进行分词 7 //document.add(new TextField("content", new FileReader(file))); 如果不用utf-8编码的话直接用这个就可以了
View Code
Field是Lucene建立索引的最小单元,相当于关系表中的属性。一个Document可以包含多个Field。Document添加Field只需调用Add()方法。
Lucene为我们提供了多种类型的Field,比如IntField, LongField, StringField, TextField等。程序实例中,我们用到了StringField和TextField。我们有必要来了解一下这两种Field的区别,因为这关系到倒排表的建立:
StringField:对域进行索引,但不进行分词,将域值作为单一的语汇单元,适用于索引那些不能被分解的域值,如URL,文件路径,电话号码等。参考StringField文档。
TextField: 对域既索引又分词,Lucene会对这个域进行分词并建立倒排表。参考TextField文档。
5.添加Document。
对IndexWriter对象调用addDocument方法将文档添加到索引库中。
6.关闭IndexWriter对象。
把所有的文档都添加到索引库中后,关闭Indexwriter对象。
ps:这篇博客以文集为例形象生动地说明了IndexWriter,Document和Field的关系,大家不妨看一看:例子
关于Lucene的具体索引步骤就介绍到这里~~
.
相关文章推荐
- Lucene实现索引和查询的实例讲解
- 14、学习Lucene3.5索引之同义词分词器设计思路
- 网页设计配色系列——绿色系实例讲解
- lucene的索引结构图
- 【疑难问题】——Game中子弹的代码结构设计(未完)——是每个实例去监听某个事件
- 【系列索引】结合项目实例 回顾传统设计模式 打造属于自己的模式类系列
- 23种常用设计模式详细讲解及实例
- 以增加收藏夹功能为实例,解析asp.net forums2结构流程及组件设计
- Lucene3.5自学系列1-建立索引
- java语言讲解singleton的编程思想---深入浅出单实例Singleton设计模式
- lucene索引结构分析
- Lucene3.5 实例
- 实例讲解SQL Server中非常有用EXISTS结构
- 数据库物理结构设计-建索引原则
- lucene + IKAnalyzer 中文分词及索引,简单实例
- lucene索引结构的整理
- 实例讲解 C 语言的分支结构
- Lucene 源代码剖析-4 索引文件结构(1)
- 边学边记(五) lucene索引结构二(segments_N)
- 设计模式实例分析_软件体系结构