全文检索技术_Lucene索引文件
发布时间
阅读量:
阅读量
可以通过Lucene实现全文中重要的组成部分——索引文件的创建。
创建索引基本流程
- 请指定一个目标文件夹用于存储索引信息。
- 请创建或建立一个索引输出流对象。
- 首先,请读取数据源,并将其封装为document对象;随后,请根据域属性来定义文档对象的属性。
- 最后,请通过该输出流对象将倒排索引计算的结果输出到指定的目标目录下,并完成整个索引构建的过程。
代码演示
注释写的比较详细,就不过多解释了:
import org.apache.lucene.analysis.cn.smart.SmartChineseAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.StringField;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.store.FSDirectory;
import org.junit.Test;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
public class CreateIndexTest {
@Test
public void createIndex() throws IOException {
//指定一个文件输出目录
Path path= Paths.get("d:/test/index");
//将路径交给FSDirectory完成路径的管理,当路径不存在时,由FSDirectory帮你创建
FSDirectory fsDirectory=FSDirectory.open(path);
//创建索引输出流配置对象
IndexWriterConfig indexWriterConfig=new IndexWriterConfig(new SmartChineseAnalyzer());
//配置索引文件的模式 OpenMode.CREATE:新建 OpenMode.APPEND:追加 OpenMode.CREATE_OR_APPEND:新建或追加 ...
indexWriterConfig.setOpenMode(IndexWriterConfig.OpenMode.CREATE);
//有了输出流配置对象,就可以创建索引输出流了 需要两个参数,路径管理对象和索引配置对象
IndexWriter indexWriter=new IndexWriter(fsDirectory,indexWriterConfig);
//创建文档对象 我们以之前介绍的《全文检索技术_倒排索引算法》中的例子完成文档对象的创建:
//文章地址:
/*id:did1
title:全球与新冠病毒长期共存,中国该怎么办
origin:国是直通车
content:新冠病毒长期存在,将对人类社会带来诸多改变。中国应为此作何准备*/
/* id:did2
title:中国和巴西展开新冠病毒疫苗合作
origin:新华社客户端
content:圣保罗州将与中国实验室合作生产和测试新冠病毒疫苗。*/
Document did1=new Document();
did1.add(new TextField("title","全球与新冠病毒长期共存,中国该怎么办",Field.Store.YES));
did1.add(new StringField("origin","国是直通车",Field.Store.YES));
did1.add(new TextField("content","新冠病毒长期存在,将对人类社会带来诸多改变。中国应为此作何准备",Field.Store.YES));
Document did2=new Document();
did2.add(new TextField("title","中国和巴西展开新冠病毒疫苗合作",Field.Store.YES));
did2.add(new StringField("origin","新华社客户端",Field.Store.YES));
did2.add(new TextField("content","圣保罗州将与中国实验室合作生产和测试新冠病毒疫苗",Field.Store.YES));
//将文档对象交给索引输出流对象
indexWriter.addDocument(did1);
indexWriter.addDocument(did2);
//完成最终的创建
indexWriter.commit();
}
}
在索引输出路径上,我们观察到了Lucene完成了索引的创建过程,并如上述代码所示,在此过程中FSDirectory自行构建了不存在的目录

索引文件的查看
由于索引文件并非以纯文本形式存在, 而是被Lucene系统所特有的二进制格式, 因此无法直接以纯文本方式进行操作。类似于MP4等视频文件需借助相应软件进行解码, 我们这里的二进制文件同样可以通过特定工具软件进行解析: LUKE
LUKE是一款专为Lucene索引管理设计的小型命令行工具, 无需额外安装步骤, 解压后直接运行LUKE.exe程序即可, 非常适合快速了解并操作Lucene创建的二进制索引文件及相关文档信息

在这里选择索引的输出路径:

这个系统采用该分词器将输入内容分割成独立的词汇并构建了一个索引文件。

SmartChineseAnalyzer 分词器 相较于 IK 分词器 在 中文 处理 方面 更为 优秀 , 如果有 兴趣 的 朋友 可以 获取 jar 包 并 方便地 在 代码 中 进行 替换 。
全部评论 (0)
还没有任何评论哟~
