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全文 ...
随机推荐
- IIncrementalGenerator 增量 Source Generator 生成代码应用 将构建时间写入源代码
本文将和大家介绍一个 IIncrementalGenerator 增量 Source Generator 生成代码技术的应用例子,将当前的构建时间写入到代码里面.这个功能可以比较方便实现某些功能的开关 ...
- dotnet C# 根据椭圆长度和宽度和旋转角计算出椭圆中心点的方法
本文来告诉大家如何根据椭圆长度和宽度和旋转角计算出椭圆中心点的方法 方法很简单,请看代码 /// <summary> /// 辅助进行椭圆点计算的类 /// </summary> ...
- visual studio 2008的试用版评估期已结束(附无法使用产品密钥)的解决方法
visual studio 2008过了试用期后再次启动提示对话框:visual studio的试用版评估期已结束. 解决办法: 第一步,在"控制面板"中启动"添加删除程 ...
- css的animate做一个信号动画
html <div class="jump flex-fs fadeAndScaleIn"> <span></span> <span> ...
- Solution Set - 点分治
A[POJ1741].给定一棵树,边有权,求长度不超过\(k\)的路径数目. B[HDU4871].给定一张图,边有权,求它的最短路径树上恰含\(k\)个点的路径中最长路径的长度及数目. C[HDU4 ...
- Golang使用正则
目录 正则在线测试网站 Golang标准库--regexp 相关文章 课程学习地址: 手册地址: dome 正则在线测试网站 https://regex101.com/ Golang标准库--rege ...
- gcc版本升级
升级链接: CentOS 7 gcc版本需升级到7.5.0 ,详细可参考文档:https://learn.microsoft.com/zh-cn/azure/cognitive-services/sp ...
- turltle模块详解
引言:turtle(海龟)模块,我们是用它来进行画图的,基本上就是画简单的直线,点,和曲线. 你可以把它想成一个小海龟,在沙滩上行走,然后留下的各种痕迹,使用Turtle模块可以绘制很多精美的图形. ...
- layui表格内可编辑下拉框
表格内可编辑下拉框扩展自别人的表格内下拉框 一.列模板,这是列配置的templet字段需要使用的. 1.inputdiv,输入框覆盖在下拉框上面左半部.这个样式用来调整输入框和下拉框不会超出单元格. ...
- 免费考AI OCP认证,附通关秘籍!
这是一个能让你快速熟悉AI相关技能的考试,由Oracle官方提供,而且限时免费. 它就是OCI Generative AI Professional. 可以看到,目前免费政策正在执行,到今年的7月31 ...