从零开始学习 Lucene.Net:.NET Core 中的全文搜索与索引管理
Lucene.Net 是一个开源的全文搜索引擎库,它是 Apache Lucene 项目的 .NET 移植版本。Lucene.Net 提供了强大的搜索功能,广泛应用于文档搜索、日志分析、数据检索等场景。随着大数据的爆发,开发者越来越依赖高效的搜索引擎来实现复杂的搜索需求,而 Lucene.Net 则是一个不错的选择。
本文将从零开始讲解如何在 .NET Core 中使用 Lucene.Net,涵盖从创建索引到查询数据的完整过程,并深入分析如何在实际项目中管理索引。
1. 什么是 Lucene.Net?
Lucene.Net 是一个信息检索库,它允许开发者高效地进行文本索引和搜索。它的核心功能包括:
-
创建索引:将文档的内容转化为索引,支持高效检索。
-
全文搜索:对文档中的内容进行全文搜索,支持多种查询类型(如短语查询、范围查询等)。
-
灵活的分析器:Lucene.Net 提供多种文本分析器,可以根据需求进行定制化文本处理。
Lucene.Net 的强大之处在于其高效的搜索引擎架构和对大规模数据的支持,使其在各种场景中得到了广泛的应用。
2. 安装 Lucene.Net
要在 .NET Core 项目中使用 Lucene.Net,我们需要通过 NuGet 安装相关的包。你可以打开终端并运行以下命令:
dotnet add package Lucene.Net
该命令会将 Lucene.Net 包添加到你的项目中,之后你就可以开始在项目中使用 Lucene.Net 进行全文搜索和索引管理了。
3. 基本概念
在使用 Lucene.Net 之前,我们需要了解几个基本概念:
-
Document(文档):在 Lucene 中,文档是存储数据的基本单位。一个文档可以包含多个字段,每个字段可以包含不同类型的数据。
-
Field(字段):每个文档包含的字段有名称和值。字段可以存储不同的数据类型,例如文本、数字等。
-
Index(索引):索引是 Lucene 用来存储文档的结构,索引将文档转换为倒排索引,允许快速查找和检索。
-
Analyzer(分析器):分析器用来将文本分解为一系列单词,并执行分词、去除停用词、转换大小写等处理。
4. 创建索引
在 Lucene 中,创建索引是处理数据的第一步。索引帮助我们高效地存储和查询文档。以下是一个简单的示例,展示如何在 .NET Core 中创建一个索引并添加文档。
4.1 初始化索引和文档
using Lucene.Net.Analysis.Standard;
using Lucene.Net.Documents;
using Lucene.Net.Index;
using Lucene.Net.Store;
using Lucene.Net.Util;
using System;class Program
{static void Main(string[] args){// 设置索引存储的目录路径var directory = FSDirectory.Open(@"d:\LuceneIndex");// 使用标准分析器进行文本分析var analyzer = new StandardAnalyzer(LuceneVersion.LUCENE_48);// 创建一个 IndexWriterConfig,用于配置 IndexWritervar config = new IndexWriterConfig(LuceneVersion.LUCENE_48, analyzer);var writer = new IndexWriter(directory, config);// 创建一个文档var doc = new Document{// 添加字段,字段可以存储文本内容new StringField("id", "1", Field.Store.YES),new TextField("title", "Lucene.Net 介绍", Field.Store.YES),new TextField("content", "Lucene.Net 是一个强大的搜索引擎库。", Field.Store.YES)};// 将文档添加到索引writer.AddDocument(doc);// 提交更改并关闭索引写入器writer.Commit();writer.Close();Console.WriteLine("索引创建成功!");}
}
代码解析
-
FSDirectory.Open:指定索引文件存储的路径,索引将会保存在此目录。
-
StandardAnalyzer:使用标准分析器将文本分解成单词,并执行大小写转换、去除停用词等操作。
-
IndexWriterConfig:配置索引写入器。
-
IndexWriter:将文档写入索引的主要工具。
-
AddDocument:将一个文档添加到索引中。
在这个简单的示例中,我们创建了一个包含 id
、title
和 content
字段的文档,并将其添加到索引中。
5. 查询索引
创建索引后,接下来我们可以执行查询操作。Lucene.Net 提供了强大的查询能力,支持多种查询类型。
5.1 简单查询
使用 IndexSearcher
来执行查询,QueryParser
用来解析查询字符串。以下是一个查询示例,展示如何搜索包含指定关键字的文档。
using Lucene.Net.Analysis.Standard;
using Lucene.Net.Documents;
using Lucene.Net.Index;
using Lucene.Net.QueryParsers.Classic;
using Lucene.Net.Search;
using Lucene.Net.Store;
using Lucene.Net.Util;
using System;class Program
{static void Main(string[] args){// 打开已创建的索引目录var directory = FSDirectory.Open(@"D:\LuceneIndex");// 使用标准分析器进行文本分析var analyzer = new StandardAnalyzer(LuceneVersion.LUCENE_48);// 创建一个 IndexReader,用于读取索引var reader = DirectoryReader.Open(directory);var searcher = new IndexSearcher(reader);// 创建查询解析器,指定查询的字段和分析器var parser = new QueryParser(LuceneVersion.LUCENE_48, "content", analyzer);// 解析查询字符串var query = parser.Parse("Lucene");// 执行查询,获取匹配的文档var hits = searcher.Search(query, 10).ScoreDocs;// 显示查询结果foreach (var hit in hits){var doc = searcher.Doc(hit.Doc);Console.WriteLine($"ID: {doc.Get("id")}, Title: {doc.Get("title")}");}// 关闭 IndexReaderreader.Close();}
}
代码解析
-
DirectoryReader:读取索引。
-
IndexSearcher:执行查询操作。
-
QueryParser:解析查询字符串并构建查询对象。
-
Search():执行查询,返回与查询匹配的文档。
在这个示例中,我们查询 content
字段中包含 "Lucene" 关键字的文档,并显示匹配的文档的 id
和 title
。
6. 高级查询
Lucene 支持多种复杂查询,以下是一些常见的查询方式:
6.1 布尔查询
布尔查询允许你组合多个查询条件,如 AND、OR、NOT 等。
var booleanQuery = new BooleanQuery
{{ new TermQuery(new Term("content", "Lucene")), Occur.MUST },{ new TermQuery(new Term("content", "search")), Occur.MUST }
};var hits = searcher.Search(booleanQuery, 10).ScoreDocs;
6.2 短语查询
短语查询用于查找包含多个词的短语。
var phraseQuery = new PhraseQuery();
phraseQuery.Add(new Term("content", "Lucene"));
phraseQuery.Add(new Term("content", "search"));var hits = searcher.Search(phraseQuery, 10).ScoreDocs;
6.3 范围查询
范围查询允许你搜索某个字段值在特定范围内的文档。
var rangeQuery = NumericRangeQuery.NewIntRange("year", 2000, 2025, true, true);
var hits = searcher.Search(rangeQuery, 10).ScoreDocs;
7. 索引管理
Lucene 还提供了索引的管理功能,包括更新和删除文档。
7.1 删除文档
// 删除 ID 为 1 的文档
writer.DeleteDocuments(new Term("id", "1"));
writer.Commit();
7.2 更新文档
更新文档的操作实际上是先删除原文档,然后插入一个新的文档。
// 删除并更新 ID 为 1 的文档
writer.UpdateDocument(new Term("id", "1"), doc);
writer.Commit();
8. 总结
Lucene.Net 是一个强大且灵活的搜索引擎库,适用于 .NET Core 环境。本文介绍了如何在 .NET Core 中使用 Lucene.Net 构建索引、执行查询以及进行高级搜索操作。通过掌握 Lucene.Net 的基础,你可以为自己的应用程序实现高效的全文搜索和索引管理。
Lucene.Net 在大数据时代中的应用场景非常广泛,无论是网站搜索、文档检索还是日志分析,它都能为开发者提供可靠的解决方案。希望本文能够帮助你更好地理解和使用 Lucene.Net,让你在项目中实现更高效的搜索功能。
相关文章:
从零开始学习 Lucene.Net:.NET Core 中的全文搜索与索引管理
Lucene.Net 是一个开源的全文搜索引擎库,它是 Apache Lucene 项目的 .NET 移植版本。Lucene.Net 提供了强大的搜索功能,广泛应用于文档搜索、日志分析、数据检索等场景。随着大数据的爆发,开发者越来越依赖高效的搜索引擎来实现复杂的搜索需求…...
opencv--图像处理
图像处理技术 图像处理技术是利用计算机对图像进行计算,分析和处理的技术,包括数字图像处理和计算机视觉两大领域。 对图像的处理包括滤波,缩放,分割,识别(两种信息对比)等。 链接 数字图像处理 1. 数字图像处理(Digital Image Processing) 数字图像处理主要关注图…...
JCST 2025年 区块链论文 录用汇总
Conference:Journal of Computer Science and Technology (JCST) CCF level:CCF B Categories:交叉/综合/新兴 Year:2025(截止4.19) JCST 2024年 区块链论文 录用汇总 1 Title: An Understandable Cro…...
股指期货跨期套利是如何赚取价差利润的?
股指期货跨期套利,简单来说,就是在同一交易所内,针对同一股指期货品种的不同交割月份合约进行的套利交易。投资者会同时买入某一月份的股指期货合约,并卖出另一月份的股指期货合约,待未来某个时间点,再将这…...
【java实现+4种变体完整例子】排序算法中【冒泡排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格
以下是冒泡排序的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格: 一、冒泡排序基础实现 原理 通过重复遍历数组,比较相邻元素并交换逆序对,逐步将最大值“冒泡”到数组末尾。 代码示例 pu…...
毕业论文超清pdf带标签导出
Word直接导出的pdf不够清晰,使用打印导出的pdf又不带书签以及目录跳转功能这一问题,查阅网上资料使用Adobe DC似乎能够解决但是下载安装比较麻烦,于是写了python程序解决该问题。 解决思路: 使用python脚本对两个pdf文件进行合并…...
STM32单片机入门学习——第43节: [12-3] 读写备份寄存器实时时钟
写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做! 本文写于:2025.04.19 STM32开发板学习——第43节: [12-3] 读写备份寄存器&实时时钟 前言开发板说明…...
筛选法(埃氏筛法)C++
判断N个数是否质数 输入N个整数M,判断它们是否为质数。如果是输出“YES”,否则输出“NO”。(1<n<10000) 输入格式 第一行为N,第2~n1行每行为一个正整数M。(1<M<1000000)…...
PointCore——利用局部全局特征的高效无监督点云异常检测器论文与算法解读
概述 三维点云异常检测旨在从训练集中检测出异常数据点,是工业检测、自动驾驶等众多应用的基础。然而,现有的点云异常检测方法通常采用多个特征存储库来充分保留局部和全局特征表示,这带来了高昂的计算成本以及特征之间的不匹配问题。为解决…...
洛谷P1177【模板】排序:十种排序算法全解(1)
扯谈 之前我已经把十大排序算法全讲了一遍(具体详见专栏C排序算法),今天我们来用一道简单的题目总结实战一下。 算法实现 一、桶排序(Bucket Sort) 适用场景:数据范围已知且较小(需根据测试数据调整…...
Graham Scan算法求解二维凸包
一、凸包及其概念 凸包(Convex Hull)是计算几何中的一个重要概念。在一个实数向量空间中,对于给定的点集,凸包是指包含这些点的最小凸多边形。在二维平面上,凸包可以形象地理解为用一个橡皮圈将所有点紧紧包裹起来&am…...
【java实现+4种变体完整例子】排序算法中【希尔排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格
以下是希尔排序的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格: 一、希尔排序基础实现 原理 希尔排序是插入排序的改进版本,通过分步缩小增量间隔,将数组分成多个子序列进行插入排序&#…...
【文件操作与IO】详细解析文件操作与IO (二)
本篇博客是上一篇文章的续写,重点介绍数据流,还包括三道练习题. 🐎文章专栏: JavaEE初阶 🚀若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅🚀 要开心…...
【java实现+4种变体完整例子】排序算法中【基数排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格
基数排序详解及代码示例 基数排序原理 基数排序通过处理每一位数字进行排序,分为 LSD(最低位优先) 和 MSD(最高位优先) 两种方式。核心步骤: 确定最大值:计算数组中最大数的位数。逐位排序&am…...
Java中的函数式编程详解
Java中的函数式编程是一个在Java 8中引入的特性,它将计算视为数学函数的求值,避免使用可变状态和数据。其核心特性包括Lambda表达式、函数式接口和Stream API。以下将结合代码示例和具体场景详细讲解这些特性。 1. Lambda表达式 Lambda表达式是Java 8引…...
专精特新政策推动,B端UI设计如何赋能中小企业创新发展?
在当前数字化转型浪潮下,专精特新政策为中小企业提供了强大的支持,助力其在细分领域实现专业化、精细化、特色化和创新化发展。B端UI设计作为提升企业数字化产品用户体验和工作效率的重要手段,能够有效赋能中小企业创新发展。本文将探讨专精特…...
从零开始学A2A四:A2A 协议的高级应用与优化
A2A 协议的高级应用与优化 学习目标 掌握 A2A 高级功能 理解多用户支持机制掌握长期任务管理方法学习服务性能优化技巧 理解与 MCP 的差异 分析多智能体场景下的优势掌握不同场景的选择策略 第一部分:多用户支持机制 1. 用户隔离架构 #mermaid-svg-6SCFaVO4oDU…...
海关总署广东:广东外贸一季度进出口2.14万亿元 同期增长4.2%
大湾区经济网湾区财经报道,据海关总署广东分署统计,今年一季度,广东外贸进出口2.14万亿元,较去年同期(下同)增长4.2%,增速高于全国2.9个百分点。其中,出口1.34万亿元,增长…...
C++代码优化
前段时间写了一些代码,但是在运算过程中发现有些代码可以进行改进以提高运行效率,尤其是与PCL相关的部分,可以进行大幅度提高.特意在此进行记录,分享给大家,也供自己查看. pcl::PointCloud< …...
Manim教程:第七章 坐标系统
#什么是坐标系统?特点是什么? 坐标系统是一个用于确定空间中点位置的数学工具。它通过一组数值(坐标)来描述一个点在某个空间中的位置。不同类型的坐标系统可以用于不同的应用场景,最常见的包括: 笛卡尔坐标系:使用直角坐标系,通常用坐标轴(如x轴和y轴)来表示二维空间…...
U盘实现——双盘符实现
文章目录 双盘符实现描述符类特殊命名get max luninquiry上一篇文章中介绍了 U 盘的枚举过程 U盘实现——U 盘枚举过程 双盘符实现 描述符 双盘符的时候中,描述符的实现与上节完全一致,不同的只有类特殊命令 设备描述符配置描述符接口描述符输出端点描述符输入端点描述符上…...
【Linux】【阿里云服务器】【树莓派】学习守护进程编程、gdb调试原理和内网穿透信息
目录 一. 守护进程的含义及编程实现的主要过程 1.1守护进程 1.2编程实现的主要过程 二、在树莓派中通过三种方式创建守护进程 2.1nohup命令创建 2.2fork()函数创建 2.3daemon()函数创建 三、在阿里云中通过三种方式创建守护进程 3.1nohup命令创建 3.2fork()函数创建 …...
2025年03月中国电子学会青少年软件编程(Python)等级考试试卷(二级)答案 + 解析
青少年软件编程(Python)等级考试试卷(二级) 分数:100 题数:37 一、单选题(共25题,共50分) 1. 老师要求大家记住四大名著的作者,小明机智地想到了可以用字典进行记录,以下哪个选项的字典格式是正确?( ) A. [‘曹雪芹’:‘红楼梦’, ‘吴承恩’:‘西游记’, ‘罗贯…...
【Linux系统篇】:System V IPC核心技术解析---从共享内存到消息队列与信号量
✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ✨ 个人主页:余辉zmh–CSDN博客 ✨ 文章所属专栏:c篇–CSDN博客 文章目录 一.System V共享内存(重点)1.基本概念和原理…...
关于GPU的涡轮散热与被动散热
显卡涡轮散热与被动散热的深度解析 一、涡轮散热的定义与工作原理 涡轮散热技术是通过高速旋转的涡轮风扇配合封闭式风道设计,将冷空气吸入并强制排出热量的主动散热方案。其核心原理包含以下关键点: 气流动力学设计:涡轮风扇采用精密叶片(如离心式结构),在相同尺寸下能…...
namesapce、cgroup
dd: 制作磁盘镜像:借助 dd 指令能够把整个磁盘或者分区的数据复制到一个文件里,形成磁盘镜像文件。此镜像文件可用于备份数据或者在其他系统中恢复磁盘。 恢复磁盘镜像:可以把之前创建的磁盘镜像文件恢复到磁盘或者分区 磁盘初始…...
C++23 新特性:行拼接前去除空白符 (P2223R2)
文章目录 1\. 什么是行拼接前去除空白符2\. 为什么需要这一特性3\. 示例代码输出结果 4\. 编译器支持5\. 优势与应用场景5.1 提高代码可读性5.2 减少潜在错误5.3 适用于多行字符串 6\. 其他相关特性7\. 总结 C 语言一直在不断进化,以满足现代软件开发的需求。C23 标…...
算法思想之链表
欢迎拜访:雾里看山-CSDN博客 本篇主题:算法思想之链表 发布时间:2025.4.18 隶属专栏:算法 目录 算法介绍常用技巧 例题两数相加题目链接题目描述算法思路代码实现 两两交换链表中的节点题目链接题目描述算法思路代码实现 重排链表…...
《软件设计师》复习笔记(11.5)——测试原则、阶段、测试用例设计、调试
目录 1. 测试基础概念 2. 测试方法分类 3. 测试阶段 真题示例: 题目1 题目2 题目3 4. 测试策略 5. 测试用例设计 真题示例: 6. 调试与度量 真题示例: 1. 测试基础概念 定义:系统测试是为发现错误而执行程序的过程&…...
工厂方法模式详解及在自动驾驶场景代码示例(c++代码实现)
模式定义 工厂方法模式(Factory Method Pattern)是一种创建型设计模式,通过定义抽象工厂接口将对象创建过程延迟到子类实现,实现对象创建与使用的解耦。该模式特别适合需要动态扩展产品类型的场景。 自动驾驶感知场景分析 自动驾…...
Java 2025:解锁未来5大技术趋势,Kotlin融合AI新篇
各位Java开发者们好!🚀 2025年的Java世界正在经历一场前所未有的技术变革。作为深耕Java领域多年的技术博主,今天我将带大家深入探索Java生态即将迎来的5大技术趋势,特别是Kotlin的深度融合和AI技术的新篇章。准备好了吗ÿ…...
抗辐照设计优化:商业航天高可靠系统设计的关键路径
随着商业航天领域的快速发展,航天器的可靠性和抗辐照能力已成为系统设计的核心需求。在严苛的太空辐射环境中,电子设备面临着单粒子效应、总剂量效应和位移损伤效应等多重挑战。抗辐照设计优化不仅是确保航天器任务成功的关键路径,更是推动商…...
颚式破碎机的设计
一、引言 颚式破碎机作为矿山、建材等行业的重要破碎设备,其性能优劣直接影响物料破碎效率与质量。随着工业生产规模的扩大和对破碎效率要求的提高,设计一款高效、稳定、节能的颚式破碎机具有重要意义。 二、设计需求分析 处理能力:根据目…...
1panel第三方应用商店(本地商店)配置和使用
文章目录 引言资源网站实战操作说明 引言 1Panel 提供了一个应用提交开发环境,开发者可以通过提交应用的方式将自己的应用推送到 1Panel 的应用商店中,供其他用户使用。由此衍生了一种本地应用商店的概念,用户可以自行编写应用配置并上传到自…...
ObjectOutputStream 深度解析
ObjectOutputStream 深度解析 ObjectOutputStream 是 Java IO 体系中的一个关键类,用于序列化(将对象转换为字节流),通常与 ObjectInputStream 配合使用,实现对象的持久化存储或网络传输。 1.作用:完成对象的序列化过程 2.它可以将JVM当中的Java对象序列化到文件中/网…...
如何学习和研究量子计算与量子计算机:从理论到实践的完整路径
量子计算作为量子力学与计算机科学的交叉领域,正在迅速改变我们对计算能力的认知。无论是破解经典加密算法,还是加速药物分子模拟,量子计算都展现出巨大的潜力。然而,学习这一领域需要系统化的理论知识和实践能力。以下是基于最新…...
数据结构学习笔记 :二叉搜索树与高效查找算法详解
目录 二叉搜索树(BST)实现 1.1 顺序存储实现 1.2 链式存储实现查找算法 2.1 顺序查找 2.2 折半查找 2.3 哈希查找总结与应用场景代码示例与完整实现 一、二叉搜索树(BST)实现 1. 顺序存储实现 BST的顺序存储基于完全二叉树的特…...
广搜bfs-P1443 马的遍历
P1443 马的遍历 题目来源-洛谷 题意 要求马到达棋盘上任意一个点最少要走几步 思路 国际棋盘规则是马的走法是-日字形,也称走马日,即x,y一个是走两步,一个是一步 要求最小步数,所以考虑第一次遍历到的点即为最小步数ÿ…...
Ubuntu22.04安装QT、px4安装环境
Ubuntu22.04安装QGC编译环境、QT、px4编译环境 安装QGC安装Ubuntu安装QT配置px4安装环境出现错误怎么办 安装QGC 我使用的是pixhawk V5飞控,在QGC4.4 Guide里,说 安装Ubuntu 直接去清华源里将Ubuntu镜像下载下来(网址:清华源下…...
【IDEA2020】 解决开发时遇到的一些问题
目录 一、批量更新数据库数据 逐条更新 Db.updateEntitiesBatch() 二、Error running,Command line is too long. Shorten command line 报错场景 报错分析 解决方法 一、批量更新数据库数据 逐条更新 List<UserModel> ums userMapper.selectListBy…...
基于autoware1.14的实车部署激光雷达循迹,从建图、定位、录制轨迹巡航点、到实车运行。
1.首先安装autoware ,大家可以以下一下博客进行安装,如果缺少库什么的直接问ai安装对应的库就行。ubuntu18.04安装Autoware1.14---GPU版 最全环境配置说明_autoware1.14安装教程-CSDN博客 安装成功后运行: source install/setup.bash roslau…...
抽象类和接口的区别
1. 定义 抽象类:用于描述一类事物的共性接口:用于描述行为。 2. 方法和变量 抽象类: 可以有普通方法和抽象方法。可以有普通成员变量和静态常量。 接口: JDK 8之前只支持抽象方法,JDK 8后支持默认方法和静态方法…...
自注意力机制self-attention
目录 简介: 输入和输出方式: Sequence Labeling: self-attention运作方式: 一:怎么从vector得到b1 二:利用矩阵的方法怎么得到 Multi-head Self-attention: positional encoding&#x…...
《Operating System Concepts》阅读笔记:p735-p737
《Operating System Concepts》学习第 62 天,p735-p737 总结,总计 3 页。 一、技术总结 1.distributed system (1)定义 A collection of loosely coupled nodes interconnected by a communication network(一组通过通信网络相互连接的松散耦合节点)…...
2025-04-19 Python 强类型编程
文章目录 1 方法标注1.1 参数与返回值1.2 变参类型1.3 函数类型 2 数据类型2.1 内置类型2.2 复杂数据结构2.3 类别选择2.4 泛型 3 标注方式3.1 注释标注3.2 文件标注 4 特殊情形4.1 前置引用4.2 函数标注扩展4.3 协变与逆变4.4 dataclass 5 高级内容5.1 接口5.2 泛型的协变/逆变…...
RVOS的任务调度优化
12.系统优化–任务调度 12.1 改进任务管理功能 在原有基础上进⼀步改进任务管理功能。具体要求:改进 task_create(),提供更多的参数,具体改进后的函数如下所⽰: int task_create(void (*task)(void* param),void *param, uint8…...
【论文阅读20】-CNN-Attention-BiGRU-滑坡预测(2025-03)
这篇论文主要探讨了基于深度学习的滑坡位移预测模型,结合了MT-InSAR(多时相合成孔径雷达干涉测量)观测数据,提出了一种具有可解释性的滑坡位移预测方法。 [1] Zhou C, Ye M, Xia Z, et al. An interpretable attention-based deep…...
图像预处理-图像噪点消除
一.基本介绍 噪声:指图像中的一些干扰因素,也可以理解为有那么一些点的像素值与周围的像素值格格不入。常见的噪声类型包括高斯噪声和椒盐噪声。 滤波器:也可以叫做卷积核 - 低通滤波器是模糊,高通滤波器是锐化 - 低通滤波器就…...
PP-OCR的安卓端部署
EMO了几天 我浪费了几天的生命,去研究PP-OCR的模型微调、从训练模型导出预测模型,结果一个坑接着一个坑,没有善终。 找了好多资料,得到一些负面信息,比如说飞浆的团队修复问题不及时啦,代码仓库有好多年不…...
2048小游戏C++板来啦!
个人主页:PingdiGuo_guo 收录专栏:C干货专栏 大家好呀,我是PingdiGuo_guo,今天我们来学习如何用C编写一个2048小游戏。 文章目录 1.2048的规则 2.步骤实现 2.1: 初始化游戏界面 2.1.1知识点 2.1.2: 创建游戏界面 2.2: 随机…...