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

Solr-搜索引擎-入门到精通

以下是对 Apache Solr 的简介及其常用语法的快速入门指南:


一、Solr 是什么?

核心定位:Apache Solr 是一个基于 Lucene 的高性能、开源的搜索平台,支持全文检索、分词、高亮、聚合统计等功能。
核心功能
全文搜索:快速检索海量文本数据。
数据聚合(Facet):统计字段分布、范围、词频等。
分布式架构:支持水平扩展,处理 PB 级数据。
实时索引:支持近实时(NRT)数据更新。
适用场景:电商搜索、日志分析、大数据检索、推荐系统等。


二、快速安装与启动

1. 下载与启动
# 下载 Solr(以 9.x 为例)
wget https://dlcdn.apache.org/solr/solr/9.5.0/solr-9.5.0.tgz
tar -xzf solr-9.5.0.tgz
cd solr-9.5.0# 启动 Solr(单机模式)
bin/solr start
2. 创建核心(Core)
bin/solr create -c my_core

三、常用语法示例

1. 基础查询(q

• 搜索所有文档:

q=*:*

• 指定字段搜索:

q=title:"智能手机"

• 多条件组合(布尔逻辑):

q=title:apple AND (category:phone OR price:[1000 TO 2000])
2. 过滤查询(fq

• 过滤特定分类:

fq=category:electronics

• 范围过滤(价格 100-500):

fq=price:[100 TO 500]
3. 排序(sort

• 按价格升序,评分降序:

sort=price asc, score desc
4. 分页(startrows

• 获取第 2 页,每页 10 条:

start=10&rows=10
5. 返回字段限制(fl

• 指定返回字段:

fl=id,title,price

• 包含评分和计算字段:

fl=title,price,score,sum(price,tax) as total
6. 高亮(hl

• 高亮标题和内容中的关键词:

hl=true&hl.fl=title,content
7. 分组(group

• 按分类分组,每组返回前 3 条:

group=true&group.field=category&group.limit=3
8. 分面统计(facet

• 统计分类分布和价格区间:

facet=true
&facet.field=category
&facet.range=price
&facet.range.start=0
&facet.range.end=1000
&facet.range.gap=100

四、高级功能语法

1. 使用 eDisMax 解析器
defType=edismax
&qf=title^2 content^1          # 字段加权
&bq=in_stock:true^10           # 提升库存商品
&bf=log(sales)                 # 按销量动态加权
2. 模糊搜索与通配符

• 模糊匹配(允许 1 字符差异):

q=applle~1

• 通配符搜索:

q=title:app*     # 匹配 "apple", "application" 等
3. 函数查询

• 按时间衰减排序:

sort=recip(ms(NOW,create_time),1,1000,1000) desc

五、最佳实践

  1. 优先使用 fq 过滤:提升性能(结果可缓存)。
  2. 限制返回字段(fl:减少网络传输开销。
  3. 避免全通配符 *:*:大数据集下性能差。
  4. 合理配置分词器:根据业务需求定制字段的分词规则。

六、总结

Solr 是一个功能强大的搜索引擎,适用于复杂查询和大规模数据场景。掌握以上语法后,可快速实现以下操作:
• 基础搜索、过滤、排序
• 聚合统计(分面、分组)
• 动态评分与高亮
• 分布式扩展与优化

通过结合 eDisMax 解析器和函数查询,能实现更灵活的搜索排序策略!

一、常用内置函数

1. 数学函数

函数

说明

示例

应用场景

abs(x)

绝对值

abs(-5)

→ 5

计算误差范围

sqrt(x)

平方根

sqrt(16)

→ 4

数据标准化处理

log(x)

自然对数

log(10)

→ 2.302

平滑指数(如销量加权)

pow(x,y)

x 的 y 次幂

pow(2,3)

→ 8

非线性评分调整

sum(x,y,...)

求和

sum(1,2,3)

→ 6

多字段数值相加

product(x,y,...)

乘积

product(2,3)

→ 6

综合权重计算

div(x,y)

除法

div(10,2)

→ 5

计算单价、比率

场景示例

  • 商品评分加权log(sales)*0.5 + rating*10
  • 价格区间标准化div(price, 100) 将价格转换为百元单位。

2. 字符串函数

函数

说明

示例

应用场景

concat(str1,str2)

字符串拼接

concat("Hello","World")

→ "HelloWorld"

生成复合字段

split(str,sep)

按分隔符拆分字符串

split("A,B,C", ",")

→ ["A","B","C"]

多标签分类统计

substr(str,start,len)

截取子字符串

substr("Solr",1,2)

→ "ol"

提取部分编码字段

strdist(str1,str2,alg)

计算字符串相似度

strdist("apple","app", "jw")

→ 0.96

模糊匹配度评分

场景示例

  • 地址模糊匹配strdist(address, "北京市海淀区", "jw")
  • 动态生成标题concat(brand, "-", model)

3. 日期函数

函数

说明

示例

应用场景

now()

当前时间

now()

→ "2024-07-30T12:00:00Z"

实时数据过滤

ms(date1, date2)

计算两个日期的毫秒差

ms(now(), publish_time)

→ 86400000

时间衰减排序

dateMath(expr)

日期运算

dateMath(now()-1DAY)

动态时间范围过滤

场景示例

  • 新闻时效性排序recip(ms(now(), publish_time), 3.16e-11, 1, 1)
  • 过滤最近一周数据fq=publish_date:[NOW-7DAYS TO NOW]

4. 条件与逻辑函数

函数

说明

示例

应用场景

if(cond, trueVal, falseVal)

条件判断

if(price>100, "高价", "低价")

动态分类标记

exists(field)

判断字段是否存在

exists(description)

→ 1 或 0

过滤缺失关键字段的文档

and(x,y)

/ or(x,y)

逻辑与/或

and(in_stock, price<100)

组合布尔条件

场景示例

  • 促销商品标识if(is_promotion, "促销中", "无促销")
  • 过滤无效商品fq=exists(image_url)

二、聚合函数(Faceting)

Solr 的聚合统计通过 Facet 实现,核心函数如下:

聚合类型

说明

示例

应用场景

count

统计文档数

facet.field=category

按分类统计商品数量

sum

求和

facet.query=sum(sales)

计算总销售额

avg

平均值

facet.query=avg(price)

计算平均价格

min

/ max

最小值/最大值

facet.query=min(price)

价格区间分析

unique

唯一值计数(基数统计)

facet.query=unique(user_id)

统计独立访问用户数

range

按范围分组统计

facet.range=price&facet.range.start=0&...

价格区间分布统计

场景示例

  • 电商数据分析
bashfacet=true
&facet.field=category
&facet.query=sum(sales)
&facet.range=price
&facet.range.start=0
&facet.range.end=1000
&facet.range.gap=100

输出结果:

    • 各分类商品数
    • 总销售额
    • 价格在 0-100、100-200 等区间的商品数量。

三、高级应用场景

1. 综合评分排序(电商搜索)
bashq=手机&
defType=edismax&
qf=title^2 brand^1&
bf=product(log(sales), recip(price,1,1000,1000))&
fl=title,price,sales,score
  • 效果:销量高且价格低的商品排名更靠前。
2. 时间衰减排序(新闻推荐)
bashq=科技&
bf=recip(ms(NOW,publish_time), 3.16e-11, 1, 1)&
fl=title,publish_time,score
  • 效果:新发布的新闻优先展示。
3. 动态价格分段统计(数据分析)
bashfacet.range=price&
facet.range.start=0&
facet.range.end=1000&
facet.range.gap=100&
facet=on
  • 效果:统计不同价格区间的商品数量(0-100元、100-200元等)。

四、最佳实践

  1. 优先使用 fq 过滤数据:提升聚合性能。
  2. 避免复杂函数嵌套:如 sqrt(log(div(x,y))) 可能影响性能。
  3. 合理选择聚合粒度:范围查询(facet.range)的间隔(gap)不宜过小。
  4. 结合缓存机制:对高频聚合查询启用结果缓存。

日期查询【最近七天】:

在 Solr 中,日期范围查询的正确语法应使用 **NOW 和日期数学表达式**,而不是 date_math 函数。以下是修复后的语法及详细说明:


正确语法

bashcreate_time:[NOW-7DAYS TO NOW]

或(更严谨的格式,指定时间单位):

bashcreate_time:[NOW-7DAYS/DAY TO NOW/DAY]  # 精确到天的范围

语法说明

1. 核心规则
  • **NOW**:表示当前时间(UTC 时区)。
  • **-7DAYS**:日期数学表达式,向前推 7 天。
  • **[start TO end]**:闭区间范围(包含边界值)。
  • **/DAY**:将时间截断到天级别(可选,用于对齐日期边界)。
2. 动态时间计算

表达式

含义

示例值(假设当前为 2024-07-30

NOW-7DAYS

7 天前的当前时刻

2024-07-23T12:00:00Z

NOW-7DAYS/DAY

7 天前的零点(UTC)

2024-07-23T00:00:00Z

NOW/DAY

当前日期的零点(UTC)

2024-07-30T00:00:00Z

3. URL 转义

在 HTTP 请求中需转义特殊字符(如 [, ], /):

bash# 实际请求示例(注意转义方括号和斜杠)
q=create_time:%5BNOW-7DAYS%20TO%20NOW%5D

完整示例

场景:查询最近 7 天内创建的数据
bashhttp://localhost:8983/solr/your-core/select?
q=*:*&
fq=create_time:[NOW-7DAYS TO NOW]&
fl=id,create_time
结果
json{"response": {"docs": [{ "id": "1", "create_time": "2024-07-25T08:30:00Z" },{ "id": "2", "create_time": "2024-07-28T15:45:00Z" }]}
}

常见问题

1. 时区问题
  • Solr 默认使用 UTC 时区,若数据存储为本地时间(如 CST),需转换时区:
bashcreate_time:[NOW-7DAYS+8HOURS TO NOW+8HOURS]  # 假设数据为 UTC+8 时区
2. 字段类型

确保 create_time 字段类型为 Solr 日期类型(如 datedatePoint)。

3. 精确时间对齐

若需按天过滤(忽略时分秒),使用截断语法:

bashcreate_time:[NOW-7DAYS/DAY TO NOW/DAY]

等价于:

bashcreate_time:[2024-07-23T00:00:00Z TO 2024-07-30T00:00:00Z]

进阶用法

动态时间范围

结合参数化请求(如 $__time 占位符):

bashcreate_time:[$__time-7DAYS TO $__time]

通过此语法,你可以精准筛选出指定时间范围内的文档,避免语法错误!

bq bf q^的区别

在 Solr 中,bq(Boost Query)、bf(Boost Function)和 q 中的 ^ 字段加权都能影响文档评分,但它们的机制和应用场景有本质区别。以下是详细对比和场景指南:


一、核心区别

功能

**q

字段加权 (title^2

)**

**bq

**

**bf

**

作用阶段

主查询的匹配评分计算阶段

主查询后,添加额外查询条件并加权

主查询后,通过函数动态调整评分

评分机制

直接影响字段的匹配得分(TF-IDF 等)

独立计算附加条件的得分,再叠加到总分

根据函数计算结果直接调整总分

适用场景

简单字段优先级调整

复杂逻辑的条件加权(如促销、库存)

动态数值计算(如时间衰减、销量加权)

语法灵活性

仅支持字段加权

支持完整 Lucene 查询语法

支持 Solr 函数表达式


二、使用场景对比

1. q 中的字段加权 (title^2)
  • 场景:明确提升某个字段的匹配权重。
  • 示例
bashq=title:apple^2 content:apple
    • title 字段匹配 "apple" 的得分是 content 的 2 倍。
2. bq(Boost Query)
  • 场景:基于额外条件(如库存状态、分类)提升评分。
  • 示例
bashq=title:apple&bq=in_stock:true^10
    • 主查询匹配 "apple",库存为 true 的文档总分额外增加 10 倍。
3. bf(Boost Function)
  • 场景:根据动态数值(如时间、销量)调整评分。
  • 示例
bashq=title:apple&bf=log(sales)^2
    • 销量越高的文档,评分提升越多(按对数计算)。

三、为什么需要 bq bf

1. 解决 q 字段加权的局限性
  • 无法处理复杂条件
    q 中的 ^ 仅能加权字段匹配得分,而 bq 可以附加任意查询条件(如 in_stock:true AND price<100)。
  • 无法动态计算评分
    bf 支持数学函数(如时间衰减 recip(ms(NOW,date))),直接操作评分值。
2. 提升灵活性和性能
  • 独立评分叠加
    bqbf 的评分独立于主查询,可复用缓存结果(如 fq 过滤后的文档集)。
  • 解耦业务逻辑
    将主查询(相关性匹配)与业务规则(如促销优先级)分离,便于维护。

四、为什么需要 eDisMax?

1. 扩展 DisMax 的局限性
  • DisMax 不足
    • 不支持通配符 (*)、模糊搜索 (~)、布尔逻辑 (AND/OR)。
    • 无法使用 bqbf 等高级功能。
  • eDisMax 增强
    • 支持所有 DisMax 功能 + 通配符、模糊搜索、函数查询。
    • 允许更复杂的评分策略(bq/bf)。
2. 典型场景
  • 电商搜索
bashdefType=edismax
q=apple watch
qf=title^2 content^1
bq=is_promotion:true^100
bf=log(sales)^2
    • 主查询匹配关键词,促销商品和高销量商品优先排序。

五、推荐使用策略

  1. 优先使用 qf + ^
    明确提升关键字段的匹配权重(如 titlecontent 更重要)。
  2. 复杂条件用 bq
    需要组合多个字段或业务规则时(如 in_stock:true AND category:electronics)。
  3. 动态计算用 bf
    依赖数值、时间等动态因素时(如新发布的文档优先)。
  4. 始终选择 eDisMax
    除非明确需要 DisMax 的极简功能,否则优先使用 eDisMax 的扩展能力。

六、总结

  • **q 字段加权**:简单直接,适合基础相关性优化。
  • **bq**:灵活添加业务规则,适合条件叠加。
  • **bf**:动态数值计算,适合时间、销量等场景。
  • eDisMax:功能全面,是复杂搜索场景的首选解析器。

分面分组的区别

一句话总结
分面:统计字段分布(如分类数量统计)
分组:按字段将文档归类(如按作者显示所有文章)


1. 分面(Faceting)

作用:统计字段值的分布情况。
示例:统计商品分类的数量

q=*:*&  
facet=true&  
facet.field=category  

返回结果

"facet_counts": {  "category": {  "electronics": 120,  "books": 80,  "clothing": 200  }  
}  

2. 分组(Grouping)

作用:按字段将文档分组,每组显示指定数量的文档。
示例:按作者分组显示文章(每组最多3篇)

q=*:*&  
group=true&  
group.field=author&  
group.limit=3  

返回结果

"groups": {  "author": {  "groups": [  {  "groupValue": "张三",  "doclist": [{文章1}, {文章2}, {文章3}]  },  {  "groupValue": "李四",  "doclist": [{文章A}, {文章B}]  }  ]  }  
}  

eDisMax vs DisMax的区别

一句话总结
DisMax:基础版,支持简单字段加权,不支持通配符/模糊搜索。
eDisMax:增强版,支持通配符/模糊搜索/布尔逻辑,推荐优先使用。


1. DisMax 示例
q=apple watch&  
defType=dismax&  
qf=title^2 content  

结果
• 搜索 titlecontent 中的 "apple watch"。
不支持 apple*apple~ 等语法。


2. eDisMax 示例
q=(apple OR samsung) AND phone~2&  
defType=edismax&  
qf=title^3 brand  

结果
• 搜索 "apple" 或 "samsung",且包含 "phone"(允许2个字符差异)。
• 支持通配符(app*)、模糊搜索(phone~2)、布尔逻辑(AND/OR)。


三、对比总结

功能

分面(Faceting)

分组(Grouping)

DisMax

eDisMax

核心用途

统计字段分布

按字段归类文档

简单多字段搜索

高级搜索(通配符/模糊)

返回形式

统计数值(如数量)

按组返回文档列表

普通文档列表

普通文档列表

典型场景

商品分类数量统计

按作者显示所有文章

基础搜索框

复杂搜索(电商/日志)

是否改结构

不改结构,只加统计

改变结构,分组展示

-

-


一句话选型
• 需要统计字段分布 → 分面
• 需要按字段归类文档 → 分组
• 需要通配符/模糊搜索 → eDisMax

相关文章:

Solr-搜索引擎-入门到精通

以下是对 Apache Solr 的简介及其常用语法的快速入门指南&#xff1a; 一、Solr 是什么&#xff1f; • 核心定位&#xff1a;Apache Solr 是一个基于 Lucene 的高性能、开源的搜索平台&#xff0c;支持全文检索、分词、高亮、聚合统计等功能。 • 核心功能&#xff1a; • 全…...

07_GRU模型

GRU模型 双向GRU笔记:https://blog.csdn.net/weixin_44579176/article/details/146459952 概念 GRU&#xff08;Gated Recurrent Unit&#xff09;也称为门控循环单元&#xff0c;是一种改进版的RNN。与LSTM一样能够有效捕捉长序列之间的语义关联&#xff0c;通过引入两个&qu…...

【字符设备驱动开发–IMX6ULL】(二)Linux 设备号

【字符设备驱动开发–IMX6ULL】&#xff08;二&#xff09;Linux 设备号 文章目录 【字符设备驱动开发–IMX6ULL】&#xff08;二&#xff09;Linux 设备号1 设备号的组成2.设备号的分配 1 设备号的组成 为了方便管理&#xff0c;Linux 中每个设备都有一个设备号&#xff0c;设…...

【大模型基础_毛玉仁】3.4 Prompt 技巧

目录 3.4 Prompt 技巧3.4.1 规范Prompt 编写1&#xff09;任务说明要明确2&#xff09;上下文丰富且清晰3&#xff09;输出格式要规范4&#xff09;排版要清晰 3.4.2 合理归纳提问1&#xff09;复杂问题拆解2&#xff09;追问 3.4.3 适时使用CoT1&#xff09;何时使用CoT2&…...

探索PyMOL新插件NRGSuite-Qt:全面提升分子对接、结合位点预测与动力学模拟的研究效率

随着分子建模和计算生物学的快速发展&#xff0c;分子对接&#xff08;Molecular Docking&#xff09;、结合位点预测、相互作用分析以及动力学研究等领域的工具越来越重要。这些工具不仅帮助研究人员理解分子间的相互作用机制&#xff0c;还能加速药物设计和优化过程。NRGSuit…...

sql2022 复制 事务级别发布后无法删除

Cannot execute as the database principal because the principal "dbo" does not exist, this type of principal cannot be impersonated, or you do not have permission. 用SA用户登录执行下列语句 USE [xxxxx] GO EXEC dbo.sp_changedbowner loginame Nsa, …...

wokwi arduino mega 2560 - 键盘与LCD显示

截图&#xff1a; 链接&#xff1a; https://wokwi.com/projects/414520193913760769 代码&#xff1a; //cslg lcd key #include <LiquidCrystal.h> // 引入LiquidCrystal库&#xff0c;用于LCD显示 #include <Keypad.h> // 引入Keypad库&#xff0c;用于键盘输…...

Linux设置SSH免密码密钥登录

文章目录 设置SSH免密码密钥登录第一步&#xff1a; 生成SSH密钥对&#xff08;在客户端操作&#xff09;方式一&#xff1a;Windows 10/11 内置的 OpenSSH 客户端&#xff08;推荐&#xff09;常用选项&#xff1a;密钥算法选择建议生成秘钥 方式二&#xff1a;借用Xshell工具…...

深度剖析HTTP协议—GET/PUT请求方法的使用-构造请求的方法

活动发起人小虚竹 想对你说&#xff1a; 这是一个以写作博客为目的的创作活动&#xff0c;旨在鼓励大学生博主们挖掘自己的创作潜能&#xff0c;展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴&#xff0c;那么&#xff0c;快来参加吧&#xff01…...

GPU算力哪家好?GpuGeek推出高性能GPU云服务

在人工智能和深度学习领域&#xff0c;GPU算力租赁已成为推动技术创新的关键因素。随着越来越多的企业和个人开发者投身于AI研究和应用开发&#xff0c;如何高效、灵活地获取GPU算力成为了一个亟待解决的问题。GpuGeek作为一站式AI基础设施平台&#xff0c;凭借其独特的优势&am…...

蓝桥杯算法实战分享

蓝桥杯算法实战分享 蓝桥杯是国内知名的程序设计竞赛&#xff0c;涵盖算法、数据结构、编程技巧等多个领域。本文将从实战角度分享蓝桥杯算法竞赛的常见题型、解题思路和优化技巧&#xff0c;帮助参赛者更好地备战。 1. 常见题型与解题思路 蓝桥杯的题型主要包括以下几类&…...

【每日算法】Day 9-1:贪心算法精讲——区间调度与最优选择(C++实现)

掌握高效决策的核心思想&#xff01;今日深入解析贪心算法的底层逻辑&#xff0c;聚焦区间调度与最优选择两大高频场景&#xff0c;结合大厂真题与严谨证明&#xff0c;彻底掌握“局部最优即全局最优”的算法哲学。 一、贪心算法核心思想 贪心算法&#xff08;Greedy Algorit…...

构建稳健的机器学习系统:应对数据偏移挑战

构建稳健的机器学习系统&#xff1a;应对数据偏移挑战 1. 引言&#xff1a;数据偏移类型与挑战 在机器学习系统从实验室到生产环境的转变过程中&#xff0c;数据偏移&#xff08;Data Shift&#xff09;是最常见也最具挑战性的问题之一。所谓数据偏移&#xff0c;指的是训练数…...

从零构建大语言模型全栈开发指南:第二部分:模型架构设计与实现-2.1.3前馈网络(FFN)与激活函数(GELU)优化

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 2.1.3 前馈网络(FFN)与激活函数(GELU)优化1. 前馈网络(FFN)的架构设计与数学原理1.1 FFN在Transformer中的核心作用2. GELU激活函数的数学特性与优化2.1 GELU的数学形式与近似计算3. 逐行代码实现…...

3个版本的Unity项目的异同

根据搜索结果&#xff0c;以下是关于 SPR 3D Sample Scene(URP)、SPR Universal 3D 和 3D(Built-In Render Pipeline) 的定义及区别分析&#xff1a; 1. 定义与用途 SPR 3D Sample Scene(URP) 是基于 Universal Render Pipeline (URP) 的 3D 示例场景&#xff0c;专为展示 URP …...

组态软件之万维组态介绍(web组态、html组态、vue2/vue3组态、组态软件、组态编辑器)

一、什么是组态软件 组态软件是一种用于创建、配置和管理监控和控制系统的软件工具。组态是指不需要编写计算机程序、通过配置的方式完成工业应用开发的系统。它们通常用于工业自动化领域&#xff0c;用于实时监视和控制工业过程。组态软件提供了丰富的功能和工具&#xff0c;使…...

Linux系统perf命令使用介绍,如何用此命令进行程序热点诊断和性能优化

Linux perf 命令使用指南&#xff1a;程序热点诊断与性能优化 perf 是 Linux 系统上一个强大的性能分析工具&#xff0c;它能够帮助开发者进行程序热点诊断和性能优化。下面详细介绍 perf 的使用方法。 1. perf 简介 perf (Performance Event Counters) 是 Linux 内核提供的…...

《Linux运维实战:Ubuntu 22.04使用pam_faillock实现登录失败处理策略》

总结&#xff1a;整理不易&#xff0c;如果对你有帮助&#xff0c;可否点赞关注一下&#xff1f; 更多详细内容请参考&#xff1a;Linux运维实战总结 一、背景信息 在ubuntu 22.04中&#xff0c;pam_tally2模块已被弃用&#xff0c;取而代之的是pam_faillock模块。因此&#xf…...

AI Agent开发大全第八课-Stable Diffusion 3的本地安装全步骤

前言 就像我们前面几课所述,本系列是一门体系化的教学,它不像网上很多个别存在的单篇博客走“吃快餐”模式,而是从扎实的基础来带领大家一步步迈向AI开发高手。所以我们的AI课程设置是相当全面的,除了有牢固的基础知识外还有外面互联网上也搜不到的生产级实战。 前面讲过…...

Spring MVC 深度解析:原理、源码剖析与实战

Spring MVC 深度解析&#xff1a;原理、源码剖析与实战 在 Spring 体系中&#xff0c;Spring MVC 作为 Web 层的核心框架&#xff0c;承担着请求处理、参数解析、视图渲染等关键任务。今天&#xff0c;我们将深入剖析 Spring MVC 的执行流程&#xff0c;结合 源码分析&#xf…...

347 前k个高频元素

步骤1&#xff1a;统计元素频率 使用哈希表&#xff08;unordered_map&#xff09;统计每个元素的出现次数&#xff0c;时间复杂度为 O(n)。 步骤2&#xff1a;构建最小堆维护Top K 优先队列&#xff08;最小堆&#xff09;&#xff1a;用priority_queue维护当前频率最高的k…...

BUUCTF-web刷题篇

1.EASYSQL破解密码 万能公式&#xff1a; 1 and 11 1 and 11 1 or 11 1 or 11 解释&#xff1a;payload SELECT * FROM tables WHERE username1 or 11 and password1 or 11 优先级排序&#xff1a;and 优先级高于 or&#xff0c;所以要计算 and 然后再计算 or username1…...

LeetCode 第31~33题

目录 LeetCode 第31题&#xff1a;下一个排列 LeetCode 第32题&#xff1a;最长有效括号 LeetCode 第33题&#xff1a;搜索旋转排序数组 LeetCode 第31题&#xff1a;下一个排列 题目描述 整数数组的一个排列就是将所有成员以序列或线性顺序排列。例如arr[1,2,3]&#xff0c;以…...

【NLP 44、实践 ⑪ 用Bert模型结构实现自回归语言模型的训练】

目录 数据文件 一、模型定义 1.模型初始化 代码运行流程 2.前向传播&#xff0c;计算损失 ⭐ 代码运行流程 二、加载语料 代码运行流程 三、 随机生成样本 代码运行流程 四、建立模型 五、采样策略选择 代码运行流程 六、模型效果测试 代码运行流程 七、模型训练 代码运行流程 …...

Go 语言规范学习(1)

文章目录 IntroductionNotation示例&#xff08;Go 语言的 if 语句&#xff09;&#xff1a; Source code representationCharacters例子&#xff1a;变量名可以是中文 Letters and digits Lexical elementsCommentsTokensSemicolons例子&#xff1a;查看程序所有的token Ident…...

ShapeCrawler:.NET开发者的PPTX操控魔法

引言 在当今的软件开发领域&#xff0c;随着数据可视化和信息展示需求的不断增长&#xff0c;处理 PPTX 文件的场景日益频繁。无论是自动化生成报告、批量制作演示文稿&#xff0c;还是对现有 PPT 进行内容更新与格式调整&#xff0c;开发者都需要高效的工具来完成这些任务。传…...

微信小程序如何接入直播功能

一、小程序直播开通背景 1.政府资质要求 政府的要求&#xff0c;小程序开通直播需要注册主体具备互联网直播的资质&#xff0c;普通企业需要《信息网络传播视听节目许可证》&#xff0c;表演性质的直播需要《网络文化经营许可证》&#xff0c;政府主体需要《社会信用代码》及…...

ArrayList<E>案例//定义一个方法,将价格低于3000的手机信息返回

import java.util.ArrayList;public class ArrayListphone {public static void main(String[] args){//定义一个方法&#xff0c;将价格低于3000的手机信息返回Phone p1new Phone("小米",1000);Phone p2new Phone("苹果",8000);Phone p3new Phone("锤…...

基于Spring Boot的停车场管理系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

慧通测控汽车智能座舱测试技术

一、引言 随着科技的飞速发展&#xff0c;汽车正从单纯的交通工具向智能化移动空间转变。智能座舱作为这一转变的核心体现&#xff0c;融合了多种先进技术&#xff0c;为用户带来前所未有的驾驶体验。从简单的信息娱乐系统到高度集成的人机交互、智能驾驶辅助以及车辆状态监测…...