Lucene的学习第六篇——入门代码再学习
2018-01-04 00:04
351 查看
到这步应该明白以下几个问题
lucene实现全文检索的流程
文档对象里面封装的域信息,几种子类域(查文档会用)
分词是为什么,怎么分,什么是语汇单元,
索引是怎么创建的,索引与语汇单元,与文档对象之间的关系,
能成功运行入门代码,能明白入门代码实现了的功能。
这篇主要回顾入门代码,介绍代码。提出需求问题。进一步实现场景一。
查询,就没有说的了,查询就是去读索引库,然后根据索引找到语汇单元,找到文档
上面两个代码就是执行查询的操作,第二句代码,返回的10,意思就是返回默认排序的前10个。
引出两个问题:
1:是怎么排序的?
2:我们只是能够搜索这个spring.txt文档,怎么实现搜索“全文”,搜索到“全文检索.txt
lucene实现全文检索的流程
文档对象里面封装的域信息,几种子类域(查文档会用)
分词是为什么,怎么分,什么是语汇单元,
索引是怎么创建的,索引与语汇单元,与文档对象之间的关系,
能成功运行入门代码,能明白入门代码实现了的功能。
这篇主要回顾入门代码,介绍代码。提出需求问题。进一步实现场景一。
创建索引: /** * 创建IndexWriter(创建索引准备工作) */ private IndexWriter createIndexWriter(String indexRepositoryPath) throws Exception { // 创建Directory对象 Directory dir = FSDirectory.open(new File(indexRepositoryPath)); // 索引库还可以存放到内存中 // Directory directory = new RAMDirectory(); // 创建一个标准分析器 Analyzer analyzer = new StandardAnalyzer(); // 创建IndexWriterConfig对象 // 参数1: Lucene的版本信息 // 参数2: 分析器对象 IndexWriterConfig config = new IndexWriterConfig(Version.LATEST, analyzer); // 创建IndexWriter对象 return new IndexWriter(dir, config); } public void testCreateIndex() throws Exception { // 第一步:创建IndexWriter(索引存放的位置) // 类似IO中的写,将索引写进指定目录下 IndexWriter indexWriter = createIndexWriter("G:\\a\\v"); // 第二步:开始创建索引 // 采集原始数据(从指定的目录下取得文件对象列表集合) File f = new File("G:\\a\\新建文件夹"); // 遍历文件对象列表 for (File file : f.listFiles()) { //为每一个文档创建文档对象 Document document = new Document(); // 文件名称 String file_name = file.getName(); // 文件大小 long file_size = FileUtils.sizeOf(file); // 文件路径 String file_path = file.getPath(); // 文件内容 String file_content = FileUtils.readFileToString(file); //将以上的文档信息,封装到域中 // 第一个域,名字,fileName,查看子类域表(域的再学习),索引,分词都已经实现, //是否储存,指定为储存 Field fileNameField = new TextField("fileName", file_name, Store.YES); //第二个域:名字,fileSize,使用的是LongField域,查表看默认实现了什么,我们指定为储存, Field fileSizeField = new LongField("fileSize", file_size, Store.YES); //第三个域,存放的是 filepath,路径存放的内容,没有分词,没有索引,储存了。 Field filePathField = new StoredField("filePath", file_path); //第四域。存放的是:内容,分词,索引了,但是我们没有储存,(使用的是No。) Field fileContentField = new TextField("fileContent", file_content, Store.NO); document.add(fileNameField); document.add(fileSizeField); document.add(filePathField); document.add(fileContentField); //将每个文档扔进索引库(自动为文档建立了索引) indexWriter.addDocument(document); } indexWriter.close(); } 运行成功:即创建索引成功
查询,就没有说的了,查询就是去读索引库,然后根据索引找到语汇单元,找到文档
TermQuery query = new TermQuery(new Term("filename", "spring.txt")); //执行查询(参数1:查询条件对象,参数2:查询结果返回的最大值) TopDocs topDocs = searcher.search(query, 10);
上面两个代码就是执行查询的操作,第二句代码,返回的10,意思就是返回默认排序的前10个。
引出两个问题:
1:是怎么排序的?
2:我们只是能够搜索这个spring.txt文档,怎么实现搜索“全文”,搜索到“全文检索.txt
返回lucene/slor文章的目录:http://blog.csdn.net/m15517986455/article/details/78986856
相关文章推荐
- Lucene的学习第三篇——入门代码
- Lucene 2.0最基本的入门代码
- Android入门学习_代码常用布局
- PHP学习总结(2)——PHP入门篇之PHP代码标识
- Lucene6入门教程(一)简介和学习流程
- Python 入门学习-第一段Python代码
- Hibernate的学习之路四(入门代码)
- 关于JSP的Cookie的入门学习,以及部分代码的备注解释
- 收集的JS代码,学习js的入门经典
- 全文检索技术Lucene入门和学习、与数据库数据结合的demo实现
- Android入门学习_代码常用布局
- Android入门学习_代码常用布局
- C语言学习入门(视频+代码)
- Lucene学习(一):入门
- lucen入门学习之一(初识Lucene)
- C++图像辅助工具包Eigen入门代码学习(很好的配合Opencv)
- js学习入门教程笔记:css+html+js用户注册代码实现
- Lucene5学习之创建索引入门
- Lucene.net入门学习系列(2)
- Hibernate的学习之路四(入门代码)