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

news2025/4/1 2:41:30

以下是对 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&...

价格区间分布统计

场景示例

  • 电商数据分析
bash


facet=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. 综合评分排序(电商搜索)
bash


q=手机&
defType=edismax&
qf=title^2 brand^1&
bf=product(log(sales), recip(price,1,1000,1000))&
fl=title,price,sales,score
  • 效果:销量高且价格低的商品排名更靠前。
2. 时间衰减排序(新闻推荐)
bash


q=科技&
bf=recip(ms(NOW,publish_time), 3.16e-11, 1, 1)&
fl=title,publish_time,score
  • 效果:新发布的新闻优先展示。
3. 动态价格分段统计(数据分析)
bash


facet.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 函数。以下是修复后的语法及详细说明:


正确语法

bash


create_time:[NOW-7DAYS TO NOW]

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

bash


create_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 天内创建的数据
bash


http://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),需转换时区:
bash


create_time:[NOW-7DAYS+8HOURS TO NOW+8HOURS]  # 假设数据为 UTC+8 时区
2. 字段类型

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

3. 精确时间对齐

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

bash


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

等价于:

bash


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

进阶用法

动态时间范围

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

bash


create_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)
  • 场景:明确提升某个字段的匹配权重。
  • 示例
bash


q=title:apple^2 content:apple
    • title 字段匹配 "apple" 的得分是 content 的 2 倍。
2. bq(Boost Query)
  • 场景:基于额外条件(如库存状态、分类)提升评分。
  • 示例
bash


q=title:apple&bq=in_stock:true^10
    • 主查询匹配 "apple",库存为 true 的文档总分额外增加 10 倍。
3. bf(Boost Function)
  • 场景:根据动态数值(如时间、销量)调整评分。
  • 示例
bash


q=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. 典型场景
  • 电商搜索
bash


defType=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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2322819.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

07_GRU模型

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

【大模型基础_毛玉仁】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…

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…

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

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

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

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

《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课程设置是相当全面的,除了有牢固的基础知识外还有外面互联网上也搜不到的生产级实战。 前面讲过…

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

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

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

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

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

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

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

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

kettle插件-rabbitmq插件

场景&#xff1a;kettle本身可以直接链接rabbitmq&#xff0c;但是需要配置rabbitmq开启mqtt协议&#xff0c;本次讲解下自定义开发组件RabbitMQ consumer&#xff0c;无需开启mqtt协议即可使用。 1、docker 安装rabbitmq 1&#xff09;下载镜像 docker pull rabbitmq 2&…

为Windows10的WSL Ubuntu启动sshd服务并使用Trae远程连接

Windows10的WSL Ubuntu&#xff0c;使用起来非常方便&#xff0c;但是美中不足的是&#xff0c;无法从Windows主机ssh到Ubuntu 。 解决的方法是在Ubuntu安装sshd服务 Ubuntu安装sshd服务 执行命令 sudo apt install openssh-server 安装好后&#xff0c;先本地测试&#x…

【C#.NET】VS2022创建Web API项目

C# Web API 是一种基于 .NET 平台&#xff08;包括但不限于.NET Framework 和 .NET Core&#xff09;构建 HTTP 服务的框架&#xff0c;用于创建 RESTful Web 服务。REST&#xff08;Representational State Transfer&#xff09;是一种软件架构风格&#xff0c;它利用HTTP协议…

体育直播系统趣猜功能开发技术实现方案

功能概述 趣猜功能是“东莞梦幻网络科技”体育直播系统源码中的互动功能&#xff0c;主播可以发起竞猜题目&#xff0c;观众使用虚拟货币进行投注&#xff0c;增加直播间的互动性和趣味性。所有货币均为虚拟货币&#xff0c;通过系统活动获取&#xff0c;不可充值提现。 数据…

33.[前端开发-JavaScript基础]Day10-常见事件-鼠标事件-键盘事件-定时器-案例

1 window定时器 window定时器方法 setTimeout的使用 setInterval的使用 2 轮播消息提示 案例实战一 – 轮播消息提示 3 关闭隐藏消息 案例实战二 – 关闭隐藏消息 4 侧边栏展示 案例实战三 – 侧边栏展示 5 tab切换实现 案例实战四 – 登录框&#xff08;作业&#xff09;…