当前位置: 首页 > article >正文

08_Doris 全文搜索进阶:BM25 算法与 SEARCH 函数详解

08_Doris 全文搜索进阶BM25 算法与 SEARCH 函数详解关键字Apache Doris、BM25算法、全文检索、SEARCH函数、倒排索引、自定义分词器、拼音检索、中文分词、相关性评分、score()函数标签Apache Doris全文搜索BM25倒排索引中文分词SEARCH函数相关性排序前言很多人对 Doris 的全文搜索能力有误解觉得它只是简单地把 Elasticsearch 的功能移植了一下其实远不止如此。Doris 的全文搜索能力经历了从 2.x 的基础倒排索引到 3.x 的高级查询算子再到 4.0 的 BM25 相关性评分 SEARCH DSL 三代演进。4.0 的全文搜索能力已经能覆盖 80% 的 Elasticsearch 使用场景同时避免了 ES 的运维复杂性和高内存消耗问题。更关键的是Doris 的全文搜索和向量搜索共享同一份存储可以在一条 SQL 里做混合检索——这是 ES 无法做到的事情。本文把 BM25 算法原理、SEARCH DSL 语法、自定义分词器配置以及生产实践中的调优技巧全部讲透。一、全文搜索能力演进1.1 三代演进路线Doris 全文搜索能力演进 ══════════════════════════════════════════════════════════ Doris 2.x基础全文检索 ├── 倒排索引引入替代原来的低效 LIKE 扫描 ├── MATCH_ALL(col, term1 term2)所有词都匹配 ├── MATCH_ANY(col, term1 term2)任一词匹配 ├── MATCH_PHRASE(col, exact phrase)短语精确匹配 └── 限制分数不支持 BM25只有 0/1 命中 Doris 3.x高级查询算子 ├── MATCH_PHRASE_PREFIX短语前缀匹配边输入边搜索 ├── MATCH_REGEXP正则表达式匹配 ├── 自定义分词器支持Tokenizer Analyzer 分离 └── 限制IDF 统计仅在 Segment 内跨 Segment 分数不可比 Doris 4.0BM25 元年 ├── BM25 相关性评分全局 IDF 统计 ├── score() 函数获取 BM25 分数用于排序 ├── SEARCH() DSL统一全文检索入口 ├── 拼音分词器4.0.2 └── SEARCH MATCH 混用支持混合评分 ══════════════════════════════════════════════════════════1.2 从 LIKE 到倒排索引为什么质变在倒排索引出现之前Doris 的全文搜索靠WHERE content LIKE %机器学习%这实际上是全表扫描在大数据量下性能极差。倒排索引改变了检索的底层机制LIKE 扫描 vs 倒排索引 LIKE %机器学习% 遍历所有行 → 对每行字符串做模式匹配 时间复杂度O(N × M)N行数M字符串长度 1 亿行 × 500 字符 → 几十亿次操作 → 分钟级 倒排索引 MATCH 机器学习 → 在倒排表中查找 → 直接获取 DocID 列表 {3, 45, 891, ...} 时间复杂度O(log(V) df)V词汇表大小df文档频率 数亿行数据 → 毫秒级二、BM25 算法深度解析2.1 从 TF-IDF 到 BM25BM25 是在 TF-IDF 基础上改进的相关性评分算法被 Elasticsearch、Lucene、Solr 等主流搜索引擎广泛采用是 2023 年之前信息检索领域的行业标准。TF-IDF 的问题TF词频随词频线性增长没有上限机器学习在文档里出现 100 次不比 10 次更有意义没有文档长度归一化长文档天然占优BM25 的改进BM25 公式 tf(q, d) × (k₁ 1) BM25(q, d) Σ IDF(q) × ─────────────────────────────── tf(q, d) k₁ × (1 - b b × |d|/avgdl) 其中 q 查询词 d 文档 tf 词频词 q 在文档 d 中出现的次数 IDF log((N - df 0.5) / (df 0.5) 1) N总文档数df包含词 q 的文档数 k₁ 词频饱和参数默认 1.2-2.0控制 TF 的增长上限 b 文档长度归一化参数默认 0.75 |d| 文档长度词数 avgdl 平均文档长度 关键改进点 1. tf 饱和处理k₁ 参数使 tf 收益递减避免词频无限权重 2. 文档长度归一化b 参数抑制长文档的天然优势直觉理解词频饱和效果示意 词权重 ↑ BM25│ ████████████趋向饱和 │ ██ │ ██ │ ██ TF-IDF│ ████████████████████线性增长 │██ └──────────────────────── 词频 tf 1 2 3 4 5 ... 100 BM25 在 tf3 后收益递减避免机器学习出现100次得分是出现1次的100倍2.2 BM25 分数的特性在使用score()函数时需要理解 BM25 分数的几个关键特性无固定量纲BM25 分数不在 0-1 范围内数值大小取决于语料库相对比较有意义同一查询下的分数可以排序不同查询间的分数不可直接比较空查询返回 0MATCH_ALL(, content)不触发 BM25 计算score() 返回 0与文档长度负相关同等词频下短文档比长文档得分高b 参数的归一化效果三、SEARCH 函数 DSL 完整语法SEARCH 函数是 Doris 4.0 新增的统一全文检索入口提供类似 Elasticsearch Query String 的 DSL 语法。3.1 基础语法-- 语法SEARCH(column,query_string[,options_json])-- 最简单的用法单词检索SELECTid,title,score()ASscoreFROMarticlesWHERESEARCH(content,机器学习)ORDERBYscoreDESC;-- 多词 AND 检索所有词必须出现WHERESEARCH(content,机器学习 AND 深度学习)-- 多词 OR 检索任一词出现即可WHERESEARCH(content,机器学习 OR 深度学习 OR 神经网络)-- NOT 排除WHERESEARCH(content,人工智能 NOT 机器人)-- 短语精确匹配双引号WHERESEARCH(content,支持向量机)-- 复杂组合WHERESEARCH(content,(机器学习 OR 深度学习) AND NOT 强化学习)3.2 指定分析器-- 使用中文分词器WHERESEARCH(content,机器学习,{analyzer: chinese})-- 使用英文分词器WHERESEARCH(title,machine learning,{analyzer: english})-- 使用拼音分词器4.0.2WHERESEARCH(title,ji qi xue xi,{analyzer: pinyin})-- 使用自定义分词器WHERESEARCH(content,技术文档,{analyzer: my_tech_analyzer})3.3 多字段搜索-- 同时在标题和正文中搜索标题权重更高SELECTid,title,(CASEWHENSEARCH(title,机器学习)THENscore()*2ELSE0ENDCASEWHENSEARCH(content,机器学习)THENscore()ELSE0END)ASweighted_scoreFROMarticlesWHERESEARCH(title,机器学习)ORSEARCH(content,机器学习)ORDERBYweighted_scoreDESC;3.4 SEARCH vs MATCH_ALL/MATCH_ANYSEARCH vs MATCH 函数对比 MATCH_ALL(col, a b c) ≈ SEARCH(col, a AND b AND c) MATCH_ANY(col, a b c) ≈ SEARCH(col, a OR b OR c) MATCH_PHRASE(col, ab) ≈ SEARCH(col, ab) 何时用 MATCH简单场景语义更清晰 何时用 SEARCH复杂 DSL需要 AND/OR/NOT 组合或从 ES 迁移四、倒排索引建立与管理4.1 创建倒排索引的完整语法-- 建表时创建倒排索引CREATETABLEarticles(idBIGINTNOTNULL,title STRING,content STRING,tags ARRAYSTRING,-- 中文全文索引INDEXidx_title(title)USINGINVERTED PROPERTIES(parserchinese,-- 中文分词support_phrasetrue,-- 支持短语查询lower_casetrue-- 大小写不敏感),INDEXidx_content(content)USINGINVERTED PROPERTIES(parserchinese,support_phrasetrue),-- 英文全文索引INDEXidx_tags(tags)USINGINVERTED PROPERTIES(parserenglish,lower_casetrue),-- 无分词索引用于精确词语检索INDEXidx_id_str(id)USINGINVERTED-- 数值类型不需要分词)DUPLICATEKEY(id)DISTRIBUTEDBYHASH(id)BUCKETS16;-- 对已有表添加索引异步构建不阻塞读写ALTERTABLEarticlesADDINDEXidx_content_v2(content)USINGINVERTED PROPERTIES(parserchinese);4.2 分析器配置Doris 支持三层分词配置分析器Analyzer三层架构 Analyzer ├── Tokenizer分词器将文本切分为 Token │ ├── standard -- 空格标点分词适合英文 │ ├── chinese -- 中文智能分词基于词典 │ ├── whitespace -- 仅按空格分词 │ ├── noop -- 不分词整段作为一个 Token │ └── char_group -- 按指定字符集分词自定义 │ ├── Token Filter过滤器对 Token 做规范化处理 │ ├── lowercase -- 转小写 │ ├── asciifolding -- 特殊字符转 ASCII │ ├── stop_word_filter -- 过滤停用词 │ ├── edge_ngram -- 生成前缀 N-gram用于前缀匹配 │ └── pinyin -- 汉字转拼音4.0.2 │ └── Character Filter字符过滤器预处理原始文本 ├── html_strip -- 去除 HTML 标签 └── pattern_replace -- 正则替换4.3 自定义分析器实战-- 场景技术文档搜索需要支持驼峰命名、下划线分词CREATEINDEXidx_codeONcode_docs(code_snippet)USINGINVERTED PROPERTIES(tokenizerchar_group,-- 按特定字符集分词char_group.typeletter_digit,-- 按字母和数字边界分词token_filterlowercase-- 统一小写);-- 效果-- getUserProfile → [get, user, profile]-- MAX_RETRY_COUNT → [max, retry, count]-- 搜索 retry 可以匹配 MAX_RETRY_COUNT-- 场景中文产品名称搜索支持拼音搜索4.0.2CREATEINDEXidx_product_nameONproducts(name)USINGINVERTED PROPERTIES(tokenizerchinese,token_filterpinyin,-- 添加拼音过滤器pinyin.first_lettertrue,-- 支持首字母缩写pinyin.padding_char );-- 效果-- 可口可乐 写入时同时生成-- 中文分词[可口可乐]-- 拼音 [ke kou ke le]-- 首字母 [kkkl]---- 以下查询都能命中-- SEARCH(name, 可口可乐) -- 中文精确-- SEARCH(name, ke kou) -- 拼音全拼-- SEARCH(name, kkkl) -- 首字母缩写五、BM25 分数实战技巧5.1 获取和使用 BM25 分数-- 基础按 BM25 相关性排序SELECTid,title,score()ASbm25_scoreFROMarticlesWHEREMATCH_ALL(content,机器学习 应用场景)ORDERBYbm25_scoreDESCLIMIT10;-- 多字段 BM25 加权-- 标题中的词权重是正文的 3 倍SELECTid,title,SUM(w)ASweighted_scoreFROM(-- 标题得分 × 3SELECTid,title,score()*3ASwFROMarticlesWHEREMATCH_ALL(title,机器学习)UNIONALL-- 正文得分 × 1SELECTid,title,score()ASwFROMarticlesWHEREMATCH_ALL(content,机器学习))tGROUPBYid,titleORDERBYweighted_scoreDESCLIMIT10;5.2 BM25 业务规则的综合排序-- 综合排序相关性 × 时效性 × 质量分数SELECTid,title,created_at,like_count,score()ASbm25_score,-- 综合得分 BM25相关性 × 时效系数 × 质量系数score()*POWER(0.95,DATEDIFF(NOW(),created_at))-- 时效性衰减每天衰减5%*LOG(1like_count)-- 质量系数对数平滑ASfinal_scoreFROMarticlesWHEREMATCH_ALL(content,机器学习 实战)ORDERBYfinal_scoreDESCLIMIT10;这种综合排序在搜索推荐系统中非常实用把纯相关性与业务指标时效、热度、质量结合起来效果远优于单纯的 BM25 排序。5.3 不同查询场景的最优策略查询场景与全文检索策略选择 ────────────────────────────────────────────────────────────── 场景 推荐方案 理由 ────────────────────────────────────────────────────────────── 精确词语搜索 MATCH_ALL score() 高效精准 模糊语义搜索 向量检索 语义理解 布尔组合搜索 SEARCH() DSL 灵活组合 中文产品/人名搜索 中文分词 拼音索引 支持拼音输入 代码/技术术语搜索 char_group 分词器 CamelCase分词 多字段加权搜索 分别计算 BM25 后加权合并 精细控制权重 混合语义关键词 Doris 混合检索BM25向量 最优质量 ──────────────────────────────────────────────────────────────六、与 Elasticsearch 的迁移对比有不少团队想把 ES 的全文搜索迁到 Doris这里给出迁移对照表Elasticsearch → Doris 全文搜索迁移对照 ES Query DSL Doris SQL ────────────────────────────────────────────────────────────── match: {content: 机器学习} MATCH_ALL(content, 机器学习) 或 SEARCH(content, 机器学习) match_phrase: 机器学习算法 MATCH_PHRASE(content, 机器学习算法) 或 SEARCH(content, 机器学习算法) multi_match: query, fields 分别对各字段建倒排索引 用多个 MATCH 条件组合 OR/AND bool: must: [A, B] WHERE MATCH_ALL(col, A) AND MATCH_ALL(col, B) should: [A, B] WHERE MATCH_ANY(col, A B) must_not: [C] WHERE NOT MATCH_ALL(col, C) query_string: A AND (B OR C) NOT D SEARCH(col, A AND (B OR C) NOT D) function_score: { 分别计算 score()在 SQL 层用公式组合 field_value_factor: like_cnt}Doris 更灵活直接 SQL 表达式 ──────────────────────────────────────────────────────────────Doris 全文搜索的优势无独立部署成本复用已有 Doris 集群与 OLAP 分析、向量检索共享存储省数据同步SQL 语法团队学习成本低Doris 全文搜索的劣势复杂嵌套 Query DSL如 nested query、percolate query还不支持Highlighting关键词高亮功能有限实时性倒排索引更新有轻微延迟取决于 Segment flush 频率七、生产实践备忘1. 分词器选择永远排在第一位建索引之前先跑分词测试看看你的数据被切成什么样的 Token。中文分词没有银弹产品名、地名、专有名词往往需要自定义词典。-- 检查分词结果4.0.2SELECTTOKENIZE(华为Mate70Pro发布,{analyzer:chinese});-- 预期[华为, mate, 70, pro, 发布]2. support_phrase 影响存储support_phrase true会额外存储 Term 的位置信息position支持短语查询但索引存储增加约 30%。如果不需要短语查询关掉可以节省空间。3. score() 只在有 MATCH 的查询里有效如果 WHERE 条件里没有全文检索条件score()返回 0。在混合查询全文 OR 向量中需要分别计算两路分数再融合。4. 并发写入时倒排索引构建是后台任务倒排索引的构建在 Compaction 时完成写入后不是立即可搜索通常有几秒到几十秒的延迟。实时性要求极高的场景需要调整 Segment flush 频率。小结Doris 4.0 的全文搜索已经不是 ES 的简陋替代品它具备了生产级的 BM25 评分、灵活的 SEARCH DSL、丰富的分词器生态中文、英文、拼音、自定义在 80% 的场景里可以完全替代 ES。最重要的价值不是它比 ES 更强而是它让全文搜索、向量搜索、结构化分析在同一个引擎里共存用 SQL 这一种语言就能完成过去需要三套系统才能做到的事情。下一篇是性能优化专题把向量检索调优、AI 函数成本控制、资源隔离策略全部系统化地讲清楚。

相关文章:

08_Doris 全文搜索进阶:BM25 算法与 SEARCH 函数详解

08_Doris 全文搜索进阶:BM25 算法与 SEARCH 函数详解 关键字: Apache Doris、BM25算法、全文检索、SEARCH函数、倒排索引、自定义分词器、拼音检索、中文分词、相关性评分、score()函数 标签: Apache Doris 全文搜索 BM25 倒排索引 中文分词…...

无线水位远程监测系统简介

无线水位远程监测系统是一种利用无线通信技术实现水位数据实时采集、传输和监控的解决方案,广泛应用于河流、水库、水塔、地下水等场景。一、国科WD300无线水位远程监测系统概述WD300系列无线水位远程监测系统,是用来测量水电站大坝、水库、前池、调压井…...

在科技革新与政策红利的双重驱动下,低空经济正成为全球城市发展的新引擎。随着城市空中交通(UAM)场景的快速落地,气象预测技术作为核心支撑,其重要性日益凸显。

一、低空经济的气象挑战与技术突破低空经济依托 1000 米以下空域构建立体交通网络,涵盖物流配送、应急救援、城市通勤等多元场景。然而,该空域受边界层湍流、强对流、风切变等复杂气象条件影响显著,对气象服务的时空分辨率和响应速度提出严苛…...

如何3步快速检测微信单向好友:免费开源工具完整教程

如何3步快速检测微信单向好友:免费开源工具完整教程 【免费下载链接】WechatRealFriends 微信好友关系一键检测,基于微信ipad协议,看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFriends …...

游戏音频解密全流程:acbDecrypter高效处理指南

游戏音频解密全流程:acbDecrypter高效处理指南 【免费下载链接】acbDecrypter 项目地址: https://gitcode.com/gh_mirrors/ac/acbDecrypter 在游戏开发与音频 mod 创作中,如何突破加密音频格式的限制,将 ACB、HCA、ADX 等专用格式转换…...

运维基础入门到精通,收藏这篇就够了

运维基础入门到精通,收藏这篇就够了 运维基础 一、运维概述 1、运维岗位的收入情况   2、运维的职位定义 什么是运维? 在技术人员之间,一致对运维有一个开玩笑的认知:运维就是修电脑的、装网线的、背锅的…...

如何高效实现BetterGenshinImpact多开:3大场景解析与实战指南

如何高效实现BetterGenshinImpact多开:3大场景解析与实战指南 【免费下载链接】better-genshin-impact 📦BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一条龙 | 全连音…...

PHP代码“带病上线”时代终结:2024最严GDPR/等保合规AI校验清单(仅限首批200名开发者获取)

第一章:PHP代码“带病上线”时代终结:合规校验的范式革命过去,PHP项目常因缺乏统一的静态分析、类型约束与安全策略而陷入“先上线、后修复”的被动循环。如今,随着 PHP 8.0 原生支持联合类型、属性类型声明、枚举及 JIT 编译&…...

Vue-Multiselect 安全防护终极指南:彻底防范 XSS 攻击与数据注入威胁

Vue-Multiselect 安全防护终极指南:彻底防范 XSS 攻击与数据注入威胁 【免费下载链接】vue-multiselect Universal select/multiselect/tagging component for Vue.js 项目地址: https://gitcode.com/gh_mirrors/vu/vue-multiselect Vue-Multiselect 作为一款…...

大文件分片上传、断点续传、校验合并全流程,手把手带你用原生PHP实现工业级方案

第一章:大文件分片上传、断点续传、校验合并全流程,手把手带你用原生PHP实现工业级方案核心设计思想 工业级大文件上传需同时满足可靠性、可恢复性与完整性。本方案基于 HTTP 分块上传协议思想,不依赖第三方 SDK,纯 PHP 原生实现&…...

终极指南:Vue-Multiselect 源码架构深度剖析与优秀组件设计模式解析

终极指南:Vue-Multiselect 源码架构深度剖析与优秀组件设计模式解析 【免费下载链接】vue-multiselect Universal select/multiselect/tagging component for Vue.js 项目地址: https://gitcode.com/gh_mirrors/vu/vue-multiselect Vue-Multiselect 是一个功…...

仅限持牌机构内部流通的PHP支付安全Checklist(含银联/网联/跨境PayPal对接特例):12类边界场景+87行防御型代码片段

第一章:金融级PHP支付接口安全设计原则与合规基线金融级PHP支付接口的设计必须以等保三级、PCI DSS v4.0及《中国人民银行关于规范支付服务市场秩序的通知》为刚性约束,安全不是附加功能,而是架构的默认属性。核心设计原则包括最小权限暴露、…...

如何高效管理全面战争MOD:虎符台/Legion Seal终极指南

如何高效管理全面战争MOD:虎符台/Legion Seal终极指南 【免费下载链接】legion-seal 虎符台/Legion Seal,全面战争游戏MOD管理器,技术栈:Tauri 2 Vue TailwindCSS 项目地址: https://gitcode.com/zeyl/legion-seal 你是否…...

如何通过MiPad5-Drivers开源驱动实现跨系统适配?设备转型与性能优化指南

如何通过MiPad5-Drivers开源驱动实现跨系统适配?设备转型与性能优化指南 【免费下载链接】MiPad5-Drivers https://github.com/Project-Aloha/windows_oem_xiaomi_nabu 项目地址: https://gitcode.com/gh_mirrors/mi/MiPad5-Drivers 在移动设备与桌面系统融合…...

台达AS系列PLC的Modbus TCP通信C#源代码及生产数据监控与Excel表格生成

台达AS系列PLC modbus TCP网口上位机通信,项目现场使用设备的C#源代码,监控设备每月每天的生产数据并生成Excel表格。最近在工业现场折腾台达AS系列PLC的Modbus TCP通讯,发现这玩意儿的协议实现和常规设备还真有点不一样。项目需求是抓取设备…...

React - 组件优化、children props 与 render props、错误边界

一、组件优化 1、问题引入 (1)基本介绍只要执行 setState,即使不改变状态数据, 组件也会重新 render只要当前组件重新 render,就会自动重新 render 子组件,纵使子组件没有用到父组件的任何数据只要父组件更新&#xff…...

OpenSSF Scorecard安全策略检查:保护代码仓库的终极完整指南

OpenSSF Scorecard安全策略检查:保护代码仓库的终极完整指南 【免费下载链接】scorecard OpenSSF Scorecard - Security health metrics for Open Source 项目地址: https://gitcode.com/gh_mirrors/sc/scorecard OpenSSF Scorecard是一款由Open Source Secu…...

终极MFE-starter缓存策略指南:Service Worker与浏览器缓存优化全解析

终极MFE-starter缓存策略指南:Service Worker与浏览器缓存优化全解析 【免费下载链接】MFE-starter MFE Starter 项目地址: https://gitcode.com/gh_mirrors/mf/MFE-starter MFE-starter作为现代前端微服务架构的开发利器,其缓存策略直接影响应用…...

告别复制粘贴!PDF-Parser-1.0实战:3步提取论文/报告/合同所有内容

告别复制粘贴!PDF-Parser-1.0实战:3步提取论文/报告/合同所有内容 1. 为什么你需要PDF-Parser-1.0? 还在为PDF文档中的内容提取而烦恼吗?无论是学术论文中的复杂公式,财务报告里的精密表格,还是法律合同中…...

终极DevSecOps安全测试工具大全:OWASP ZAP、Brakeman等实战应用指南

终极DevSecOps安全测试工具大全:OWASP ZAP、Brakeman等实战应用指南 【免费下载链接】awesome-devsecops An authoritative list of awesome devsecops tools with the help from community experiments and contributions. 项目地址: https://gitcode.com/gh_mir…...

BAAI/bge-m3环境配置全攻略:WebUI集成与语义分析服务搭建

BAAI/bge-m3环境配置全攻略:WebUI集成与语义分析服务搭建 1. 环境准备与快速部署 1.1 系统要求与依赖安装 BAAI/bge-m3作为当前最强大的开源语义嵌入模型之一,对运行环境有特定要求。以下是推荐的配置方案: 操作系统:Linux (U…...

使用Knockout.js构建完全键盘友好的无障碍导航菜单:终极指南

使用Knockout.js构建完全键盘友好的无障碍导航菜单:终极指南 【免费下载链接】knockout Knockout makes it easier to create rich, responsive UIs with JavaScript 项目地址: https://gitcode.com/gh_mirrors/kn/knockout 在现代Web开发中,创建…...

Rack错误处理终极指南:ShowExceptions中间件详解与实战技巧

Rack错误处理终极指南:ShowExceptions中间件详解与实战技巧 【免费下载链接】rack A modular Ruby web server interface. 项目地址: https://gitcode.com/gh_mirrors/ra/rack Rack是Ruby生态系统中最核心的Web服务器接口,为Ruby开发者提供了模块…...

防撤回解决方案:系统级保护的即时通讯消息安全增强

防撤回解决方案:系统级保护的即时通讯消息安全增强 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: https://gitcode.com/G…...

Spring Authorization Server 安全审计和合规性检查终极指南:10个关键实践

Spring Authorization Server 安全审计和合规性检查终极指南:10个关键实践 【免费下载链接】spring-authorization-server Spring Authorization Server 项目地址: https://gitcode.com/gh_mirrors/sp/spring-authorization-server Spring Authorization Ser…...

终极指南:5分钟掌握Fan Control风扇控制软件,彻底优化电脑散热与噪音

终极指南:5分钟掌握Fan Control风扇控制软件,彻底优化电脑散热与噪音 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitco…...

Alex.js 终极指南:如何用智能工具提升写作包容性

Alex.js 终极指南:如何用智能工具提升写作包容性 【免费下载链接】alex Catch insensitive, inconsiderate writing 项目地址: https://gitcode.com/gh_mirrors/al/alex Alex.js 是一款强大的开源工具,专为检测和改进写作中的不敏感、不周到表达而…...

如何构建现代化单页应用导航系统:从基础原理到实战实现

如何构建现代化单页应用导航系统:从基础原理到实战实现 【免费下载链接】screencasts Code that goes along with my screencasts. 项目地址: https://gitcode.com/gh_mirrors/sc/screencasts 单页应用(SPA)导航是现代Web开发的核心技…...

mPLUG视觉问答快速上手:5分钟完成本地部署,支持多格式图片+自然语言提问

mPLUG视觉问答快速上手:5分钟完成本地部署,支持多格式图片自然语言提问 你是不是经常遇到这种情况:看到一张复杂的图表,想快速知道它表达了什么;或者拿到一张产品设计图,想了解其中的细节信息;…...

如何让你的Windows电脑重获新生?系统优化与个性化全攻略

如何让你的Windows电脑重获新生?系统优化与个性化全攻略 【免费下载链接】Winhance-zh_CN A Chinese version of Winhance. C# application designed to optimize and customize your Windows experience. 项目地址: https://gitcode.com/gh_mirrors/wi/Winhance-…...