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

Lucene创建索引和索引的基本检索(Lucene 之 Hello World)的更多相关文章

  1. lucene创建索引简单示例

    利用空闲时间写了一个使用lucene创建索引简单示例, 1.使用maven创建的项目 2.需要用到的jar如下: 废话不多说,直接贴代码如下: 1.创建索引的类(HelloLucene): packa ...

  2. Lucene.net(4.8.0) 学习问题记录三: 索引的创建 IndexWriter 和索引速度的优化

    前言:目前自己在做使用Lucene.net和PanGu分词实现全文检索的工作,不过自己是把别人做好的项目进行迁移.因为项目整体要迁移到ASP.NET Core 2.0版本,而Lucene使用的版本是3 ...

  3. lucene&solr学习——创建和查询索引(理论)

    1.Lucene基础 (1) 简介 Lucene是apache下的一个开放源代码的全文检索引擎工具包.提供完整的查询引擎和索引引擎:部分文本分析引擎. Lucene的目的是为软件开发人员提供一个简单易 ...

  4. Lucene底层原理和优化经验分享(1)-Lucene简介和索引原理

    Lucene底层原理和优化经验分享(1)-Lucene简介和索引原理 2017年01月04日 08:52:12 阅读数:18366 基于Lucene检索引擎我们开发了自己的全文检索系统,承担起后台PB ...

  5. SQLServer之创建辅助XML索引

    创建辅助XML索引 使用 CREATE INDEX (Transact-SQL)Transact-SQL DDL 语句可创建辅助 XML 索引并且可指定所需的辅助 XML 索引的类型. 创建辅助 XM ...

  6. SQLServer之创建唯一聚集索引

    创建唯一聚集索引典型实现 唯一索引可通过以下方式实现: PRIMARY KEY 或 UNIQUE 约束 在创建 PRIMARY KEY 约束时,如果不存在该表的聚集索引且未指定唯一非聚集索引,则将自动 ...

  7. SQLServer之创建非聚集索引

    开始之前 典型实现 可以通过下列方法实现非聚集索引: UNIQUE 约束 在创建 UNIQUE 约束时,默认情况下将创建唯一非聚集索引,以便强制 UNIQUE 约束. 如果不存在该表的聚集索引,则可以 ...

  8. mysql 索引及索引创建原则

    是什么 索引用于快速的查询某些特殊列的某些行.如果没有索引, MySQL 必须从第一行开始,然后通过搜索整个表来查询有关的行.表越大,查询的成本越大.如果表有了索引的话,那么 MySQL 可以很快的确 ...

  9. (三)Lucene——Field域和索引的增删改

          1. Field域 1.1  Field的属性 是否分词(Tokenized) 是:对该field存储的内容进行分词,分词的目的,就是为了索引. 比如:商品名称.商品描述.商品价格 否:不 ...

随机推荐

  1. 分页查询——Hibernate Criteria实现一次查询取得总记录数和分页后结果集

    使用Hibernate criteria进行分页查询时,如何实现一次查询取得总记录数和分页后结果集 - bto310 - ITeye博客 https://bto310.iteye.com/blog/1 ...

  2. prometheus学习系列十一: Prometheus 报警规则配置

    prometheus监控系统的的报警规则是在prometheus这个组件完成配置的. prometheus支持2种类型的规则,记录规则和报警规则, 记录规则主要是为了简写报警规则和提高规则复用的, 报 ...

  3. Odoo中的self详解

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826307.html 一:self是什么 目前新版的Odoo中使用到的self,是对  游标cr.用户ID ...

  4. python中#!含义

    LINUX 上的 Shebang 符号(#!) #!这个符号叫做 Shebang 或者 Sha-bangShebang 通常在 Unix 系统脚本的中第一行开头使用指明执行这个脚本文件的解释程序 使用 ...

  5. Kubernetes 监控

    1. Weave Scope Weave Scope 容器地图 创建 Kubernetes 集群并部署容器化应用只是第一步.一旦集群运行起来,我们需要确保一起正常,所有必要组件就位并各司其职,有足够的 ...

  6. C语言几个术语: 数据对象,左值,右值

    1. 数据对象 赋值表达式语句的目的是把值存储到内存位置上. 用于存储值的数据存储区域统称为数据对象. 2. 左值 左值是C语言的术语, 用于标识特定数据对象的名称或表达式. 对象指的是实际的数据存储 ...

  7. (转!)MySql Host is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts' 解决方法

    不要贪快,以你的聪明,只要有耐心,什么事不成,你真的争口气,羞羞这势利的世界也好! --久节奏,慢读书 转自:https://www.cnblogs.com/susuyu/archive/2013/0 ...

  8. Alibaba Java Coding Guidelines,以后我的Java代码规范,就靠它了

    前言 对于Java代码规范,业界有统一的标准,不少公司对此都有一定的要求.但是即便如此,庞大的Java使用者由于经验很水平的限制,未必有规范编码的意识,而且即便经验丰富的老Java程序员也无法做到时刻 ...

  9. beta冲刺(4/7)

    作业格式 课程名称:软件工程1916|W(福州大学) 作业要求:项目beta冲刺(团队) 团队名称: 那周余嘉熊掌将得队 作业目标:beta(4/7) 队员学号 队员姓名 博客地址 备注 221600 ...

  10. 项目Beta冲刺(团队)--2/7

    课程名称:软件工程1916|W(福州大学) 作业要求:项目Beta冲刺 团队名称:葫芦娃队 作业目标:进行新一轮的项目冲刺,尽力完成并完善项目 团队博客 队员学号 队员昵称 博客地址 04160242 ...