lucene demo代码
时间:2019-11-20
本文章向大家介绍lucene demo代码,主要包括lucene demo代码使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
package com.xl.lucene;
import java.io.File;
import org.apache.commons.io.FileUtils;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.*;
import org.apache.lucene.index.*;
import org.apache.lucene.search.*;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
import org.junit.Test;
/**
* 创建索引
* 查询索引
*/
public class FirstLucene {
@Test
public void testIndex() throws Exception {
/*第一步创建一个Java工程导入Java包
* 第二部创建要给index writer对象
* 1.指定索引库的存放位置Directory对象
* 2.指定要给分析器,对文档内容进行分析
* 第三步创建document对象
* 第四步创建field对象,将field添加到document对象中
* 第五步使用index writer对象将document对象写入索引库,此过程进行索引创建.并将索引和document对象写入索引库
* 第六步关闭index writer对象
* */
// 第二步
Directory directory = FSDirectory.open(new File("E:\\WorkSpace\\allOtherItem\\luceneresult"));
// Directory directory = new RAMDirectory();//保存到内存中
Analyzer analyzer = new StandardAnalyzer();//官方推荐
IndexWriterConfig indexWriterConfig = new IndexWriterConfig(Version.LATEST, analyzer);
IndexWriter indexWriter = new IndexWriter(directory, indexWriterConfig);
// 第三步
File f = new File("E:\\WorkSpace\\allOtherItem\\luceneIndex");
File[] listFiles = f.listFiles();
for (File file : listFiles) {
Document document = new Document();
String fileName = file.getName();
Field fieldNameField = new TextField("fileName", fileName, Field.Store.YES);
long file_size = FileUtils.sizeOf(file);
LongField fileSizeField = new LongField("fileSize", file_size, Field.Store.YES);
String filePath = file.getPath();
Field fieldPathField = new StoredField("filePath", filePath);
String fileContent = FileUtils.readFileToString(file);
Field fileContentField = new TextField("fileContent", fileContent, Field.Store.NO);
document.add(fieldNameField);
document.add(fileSizeField);
document.add(fieldPathField);
document.add(fileContentField);
// 第四步
indexWriter.addDocument(document);
}
indexWriter.close();
}
// 搜索索引
@Test
public void testSearch() throws Exception {
//第一步创建一个Direction对象,也就是索引库存放位置
Directory directory = FSDirectory.open(new File("E:\\WorkSpace\\allOtherItem\\luceneresult"));
// 第二步创建一个indexReader对象,需要指定Directory对象 流对象
IndexReader indexReader = DirectoryReader.open(directory);
// 第三步创建一个indexsearcher对象,需要指定Index Reader对象
IndexSearcher indexSearcher = new IndexSearcher(indexReader);
// 第四步创建一个Term Query对象,指定查询的域和查询的关键词
Query query = new TermQuery(new Term("fileName", "java.txt"));
// 第五步执行查询
TopDocs topDocs = indexSearcher.search(query, 2);
// 第六步返回查询结果.遍历查询结果并输出
ScoreDoc[] scoreDocs = topDocs.scoreDocs;
if (scoreDocs == null) {
System.out.println("读取失败");
} else {
for (ScoreDoc scoreDoc : scoreDocs) {
int doc = scoreDoc.doc;
Document document = indexSearcher.doc(doc);
//文件名称
String fileName = document.get("fileName");
//文件内容
String fileContent = document.get("fileContent");
//文件大小
String fileSize = document.get("fileSize");
//文件路径
String filePath = document.get("filePath");
System.out.println(fileName);
System.out.println(fileContent);
System.out.println(fileSize);
System.out.println(filePath);
System.out.println("----------------------------------------------------------");
}
}
// 第七步关闭Index Reader对象
System.out.println("结束");
indexReader.close();
}
}
原文地址:https://www.cnblogs.com/lovetl/p/11896849.html
- 如何使用Sqoop2
- [LeetCode]Array主题系列{1,11,15,16,18,26,27,31,33,34题}
- Bwapp漏洞平台答案全解-A1(第三篇)
- pom.xml配置文件中所有标签及作用简单描述
- 关于C#获取动态的时间差函数
- SQL Server 存储过程
- ubuntu中配置hadoop
- jQuery选择器大全(48个代码片段+21幅图演示)
- C# 如何在Excel 动态生成PivotTable
- RabbitMQ入门HelloWorld(C#)(翻译)
- Centos环境下搭建Asp.NET Core环境和安装Jexus
- Linux系统Java环境安装配置
- ASP.NET Core 依赖注入
- 使用Hive SQL插入动态分区的Parquet表OOM异常分析
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 基于python和flask实现http接口过程解析
- Python xpath表达式如何实现数据处理
- Python脚本破解压缩文件口令实例教程(zipfile)
- 使用keras实现Precise, Recall, F1-socre方式
- Python Django搭建网站流程图解
- Pandas对DataFrame单列/多列进行运算(map, apply, transform, agg)
- keras自定义损失函数并且模型加载的写法介绍
- pandas DataFrame运算的实现
- Python流程控制语句的深入讲解
- 在keras里面实现计算f1-score的代码
- Keras官方中文文档:性能评估Metrices详解
- Django QuerySet查询集原理及代码实例
- Python中zipfile压缩文件模块的基本使用教程
- 基于nexus3配置Python仓库过程详解
- Python Django中间件使用原理及流程分析