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

最新文章

  1. Oracle学习笔记八 表空间
  2. Angular 2 最终版正式发布
  3. git 强制覆盖本地
  4. zookeeper学习系列:二、api实践
  5. 国内CDN公共库
  6. JQuery下CheckBox全选全不选反选
  7. A new start!
  8. <Chapter 2>2-1-1.安装Python SDK
  9. java基础理论知识的一些总结
  10. Qt编程中,Ui文件如何被利用
  11. lldp中与snmp相关内容agentx
  12. hdu5145 NPY and girls
  13. Math类中round、ceil和floor方法的功能
  14. BZOJ4034: [HAOI2015]树上操作
  15. C# Timer 定时任务
  16. Linux Shell基线配置高级操作
  17. 【Java基础】While循环详解
  18. 第9章 Linux进程和信号超详细分析
  19. hangfire使用笔记
  20. 关于各种BUF源语的研究

热门文章

  1. Nuxt项目搭建到发布部署
  2. JavaScript 变量与注释
  3. Unable to establish SSL connection
  4. redis的cluster(分布式or分片)
  5. Ansible入门笔记(2)之常用模块
  6. Fire Balls 03—— 多个圆环以及圆环的变速变向
  7. libimobiledevice的安装与使用
  8. Exception的异常分类与处理
  9. Java 多线程学习扩展
  10. reactNative 获取组件高、宽、位置等信息