Lucene demo演示搜索查询歌手,歌名,歌词
1.导入pom jar文件
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>8.11.1</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-queryparser</artifactId>
<version>8.11.1</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-analyzers-common</artifactId>
<version>8.11.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
2.
LuceneService.java类
import com.alibaba.fastjson.JSONObject;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.*;
import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory; import java.io.IOException;
import java.nio.file.Paths;
import java.util.List;
import java.util.Set; public class LuceneService {
public static void main(String[] args) throws IOException, ParseException {
String indexDir = "D://temp//lucence_data//products";
//创建索引
// createIndex(indexDir); //中文搜索不出来
String jsonDoc = "{\"songName\":\"hello world is chinese\",\"songer\":\"liudehua hk\",\"lyrics\":\"lyricslyricslyricslyrics 2022\"}";
// String jsonDoc = "{\"aaa\":\"111\"}";
indexDoc(indexDir,jsonDoc,"chinese"); } //创建索引
private static void createIndex(String indexDir) throws IOException {
//准备目录
Directory dir = FSDirectory.open(Paths.get(indexDir));
//准备分词器
Analyzer analyzer = new StandardAnalyzer();
//配置
IndexWriterConfig iwConfig = new IndexWriterConfig(analyzer);
//创建索引
IndexWriter iw = new IndexWriter(dir,iwConfig);
//关闭索引
iw.close();
} private static void indexDoc(String indexDir,String jsonDoc,String queryStr) throws IOException, ParseException {
//准备目录
Directory dir = FSDirectory.open(Paths.get(indexDir));
//准备分词器
Analyzer analyzer = new StandardAnalyzer();
//配置
IndexWriterConfig iwConfig = new IndexWriterConfig(analyzer);
//创建索引
IndexWriter iw = new IndexWriter(dir,iwConfig);
//json转document对象
Document doc = Json2Doc(jsonDoc);
iw.addDocument(doc); //IndexReader实例
IndexReader ir = DirectoryReader.open(dir);
IndexSearcher searcher = new IndexSearcher(ir); //查询索引
QueryParser parser = new QueryParser("songName",analyzer);
Query query = parser.parse(queryStr); TopDocs hits = searcher.search(query,10);
String result = "结果=";
for (ScoreDoc scoreDoc : hits.scoreDocs){
//拿到文档
Document rdoc = searcher.doc(scoreDoc.doc);
List<IndexableField> fields = rdoc.getFields();
for (IndexableField f : fields){
result += f.name() + ":"+f.stringValue()+",\r\n";
}
System.out.println("result=" + result);
}
System.out.println("总的查询结果result=" + result);
ir.close(); //关闭索引
iw.close();
} /**
*输出结果
总的查询结果result=结果=songName:hello world is chinese,
lyrics:lyricslyricslyricslyrics 2022,
songer:liudehua hk,
*
*/ private static Document Json2Doc(String jsonDoc) {
Document doc = new Document();
JSONObject jsonObject = JSONObject.parseObject(jsonDoc);
Set<String> keys = jsonObject.keySet();
for (String key : keys){
doc.add(new TextField(key, jsonObject.getString(key), Field.Store.YES ));
}
return doc;
} }
3.本地目录生成的文件

Lucene demo演示搜索查询歌手,歌名,歌词的更多相关文章
- 使用Lucene.net+盘古分词实现搜索查询
这里我的的Demo的逻辑是这样的:首先我基本的数据是储存在Sql数据库中,然后我把我的必需的数据推送到MongoDB中,这样再去利用Lucene.net+盘古创建索引:其中为什么要这样把数据推送到Mo ...
- Lucene 的四大索引查询 ——bool 域搜索 通配符 范围搜索
Lucene 的四大索引查询 清单1:使用布尔操作符 Java代码 //Test boolean operator blic void testOperator(String indexD ...
- ASP.NET MVC搭建项目后台UI框架—5、Demo演示Controller和View的交互
目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...
- Apache Lucene(全文检索引擎)—搜索
目录 返回目录:http://www.cnblogs.com/hanyinglong/p/5464604.html 本项目Demo已上传GitHub,欢迎大家fork下载学习:https://gith ...
- Apache Solr采用Java开发、基于Lucene的全文搜索服务器
http://docs.spring.io/spring-data/solr/ 首先介绍一下solr: Apache Solr (读音: SOLer) 是一个开源.高性能.采用Java开发.基于Luc ...
- Lucene 06 - 使用Lucene的Query API查询数据
目录 1 Query对象的创建(方式一): 使用子类对象 1.1 常用的Query子类对象 1.2 常用的Query子类对象使用 1.2.1 使用TermQuery 1.2.2 使用NumericRa ...
- Lucene的其他搜索(三)
生成索引: package com.wp.search; import java.nio.file.Paths; import org.apache.lucene.analysis.Analyzer; ...
- Graylog日志管理系统---搜索查询方法使用简介
Elasticsearch 是一个基于 Lucene 构建的开源.分布式.提供 RESTful 接口的全文搜索引擎 一.Search页面的各位置功能介绍: 1.日志搜索的时间范围 为了使用方便,预设有 ...
- 基于 Lucene 的桌面文件搜索
开源2010年,自己在学习 Lucene 时开发的一款桌面文件搜索工具,这么多年过去了,代码一直静静存放在自己的硬盘上,与其让其沉睡,不如分享出来. 这款工具带有明显的模仿 Everything 的痕 ...
- 整合hibernate的lucene大数据模糊查询
大数据模糊查询lucene 对工作单使用 like模糊查询时,实际上 数据库内部索引无法使用 ,需要逐条比较查询内容,效率比较低在数据量很多情况下, 提供模糊查询性能,我们可以使用lucene全文 ...
随机推荐
- 百信银行基于 Apache Hudi 实时数据湖演进方案
简介: 本文介绍了百信银行实时计算平台的建设情况,实时数据湖构建在 Hudi 上的方案和实践方法,以及实时计算平台集成 Hudi 和使用 Hudi 的方式. 本文介绍了百信银行实时计算平台的建设情况, ...
- 致敬 hacker |盘点内存虚拟化探索之路
简介: 内存虚拟化相比裸机,仍然存在较大差异,是当下值得关注的问题! 云与虚拟化 云计算是通过 Internet 服务的方式提供动态可伸缩资源的计算模式,经过多年的发展已成为企业 IT 技术的重 ...
- [Trading] 买卖如何移动 ( 影响 ) 市场价格
大多数人都知道市场价格的变化是因为买卖行为,但却没有多少人了解买卖行为是如何影响市场价格的. 乍一看,这可能令人困惑,因为每一笔市场交易都要求总有一个买家和一个卖家. 首先,重要的是要明白市场上总是有 ...
- 编码原则 : DRY, KISS, YAGNI, S.O.L.I.D
Dont Repeat Yourself. Keep is Simple, Stupid. You Ain't Gonna Need It. 你不需要它 ( 不试图添加你认为以后可能需要的代码,适可 ...
- dotnet 对指针转换为结构体多个不同方法的性能分析
在 dotnet 里面,拿到一个指针,可以有多个不同的方法转换为结构体,本文将来告诉大家这几个方法的性能的差别 特别感谢性能优化狂魔 Stephen Toub 大佬的指导 在 WPF 框架开发中,有小 ...
- 2018-8-10-使用-Resharper-快速做适配器
title author date CreateTime categories 使用 Resharper 快速做适配器 lindexi 2018-08-10 19:16:51 +0800 2018-2 ...
- HttpClient配置SSL绕过https证书以及双向认证
HttpClient简介 1.HTTP 协议是 Internet 上使用得最多.最重要的协议之一,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源.虽然在 JDK 的 java ...
- 微分流形Loring Tu 习题21.2解答
今天的作业,随手写到博客吧. \(Proof.\)对于任意的\(p \in M\),有p附近的坐标卡\((U,x^{1},\ldots,x^{n})\), 由引理\(21.4\),$$dx^{1}\w ...
- WEB服务与NGINX(13)-NGINX的日志功能
1.nginx的日志功能 定义nginx的访问日志显示的格式,即具体记录的客户端信息和格式.日志功能由ngx_http_log_module模块提供. log_format name string . ...
- C语言:如何删除在可视化网页中未可见的内容(网页txt)
我这个代码仅仅限制于在chrome浏览器中下载china daliy的网页中实现删除可视化内容,因为每个网页的超链接或者文本主内容分布不一样,但是学会了删除一个网页类型的不可视化内容之后,修改其他网页 ...