Lucene创建索引和索引的基本检索(Lucene 之 Hello World)
2024-09-18 11:08:10
Author: 百知教育 gaozhy
注:演示代码所使用jar包版本为 lucene-xxx-5.2.0.jar
一、lucene索引操作
1、创建索引代码
try {
// 1. 指定索引文件存储位置
Directory directory = FSDirectory.open(Paths.get("F:/lucene/index/example01"));
// 2. 创建分词器 标准分词器
StandardAnalyzer analyzer = new StandardAnalyzer();
// 3. 创建索引写入器
IndexWriterConfig config = new IndexWriterConfig(analyzer);
config.setOpenMode(OpenMode.CREATE_OR_APPEND); //索引不存在创建,索引存在追加
IndexWriter indexWriter = new IndexWriter(directory, config);
// 4. 创建索引文档
Document document = new Document();
document.add(new Field("id", "2", StringField.TYPE_STORED ));
document.add(new Field("name", "CoreJava实战",StringField.TYPE_STORED ));
document.add(new Field("content", "百知金牌讲师 胡鑫哲出品",TextField.TYPE_STORED));
// 5. 添加索引
indexWriter.addDocument(document);
// 6. 释放资源
indexWriter.commit();
indexWriter.close();
directory.close();
} catch (Exception e) {
e.printStackTrace();
}
2、创建的索引文件
二、lucene索引的检索
1、索引检索代码
try{
// 1. 获取索引文件
Directory directory = FSDirectory.open(Paths.get("F:/lucene/index/example01"));
// 2. 读取索引文件
IndexReader indexReader = DirectoryReader.open(directory);
// 3. 创建索引检索器
IndexSearcher searcher = new IndexSearcher(indexReader);
// 4. 创建查询条件
QueryParser parser = new QueryParser("content",new StandardAnalyzer()); //第一个参数: 需要检索的域名 第二个参数: 分词器
Query query = parser.parse("百知"); //检索字符串
System.out.println(query.toString());
// 5. 调用检索器检索
TopDocs topDocs = searcher.search(query, 10); //第二个参数:返回结果 10条信息
System.out.println("命中数:"+topDocs.totalHits);
ScoreDoc[] docs = topDocs.scoreDocs;
// 6. 处理查询结果
for (ScoreDoc scoreDoc : docs) {
System.out.print(searcher.doc(scoreDoc.doc).get("id") + " | ");
System.out.print(searcher.doc(scoreDoc.doc).get("name") + " | ");
System.out.print(searcher.doc(scoreDoc.doc).get("content"));
System.out.println();
}
// 7. 释放资源
indexReader.close();
directory.close();
}catch(Exception e){
e.printStackTrace();
}
2、检索结果
使用“百知”检索结果
原文出处:
高志遠, Lucene创建索引和索引的基本检索, https://blog.csdn.net/qq_31871785/article/details/70169743
最新文章
- Oracle学习笔记八 表空间
- Angular 2 最终版正式发布
- git 强制覆盖本地
- zookeeper学习系列:二、api实践
- 国内CDN公共库
- JQuery下CheckBox全选全不选反选
- A new start!
- <;Chapter 2>;2-1-1.安装Python SDK
- java基础理论知识的一些总结
- Qt编程中,Ui文件如何被利用
- lldp中与snmp相关内容agentx
- hdu5145 NPY and girls
- Math类中round、ceil和floor方法的功能
- BZOJ4034: [HAOI2015]树上操作
- C# Timer 定时任务
- Linux Shell基线配置高级操作
- 【Java基础】While循环详解
- 第9章 Linux进程和信号超详细分析
- hangfire使用笔记
- 关于各种BUF源语的研究