Solr简介 #
一、Solr发展历史 #
1.1 诞生背景 #
Solr(发音为"solar")是一个开源的企业级搜索平台,由Apache软件基金会维护。
text
2004年
↓
CNET Networks开发Solr
↓
2006年
↓
捐赠给Apache软件基金会
↓
2007年
↓
成为Apache顶级项目
↓
至今
↓
Solr 9.x(最新版本)
1.2 发展历程 #
| 年份 | 事件 |
|---|---|
| 2004 | CNET Networks开发Solr作为内部搜索平台 |
| 2006 | 捐赠给Apache,成为孵化器项目 |
| 2007 | 正式成为Apache顶级项目 |
| 2010 | 与Lucene项目合并,共享代码库 |
| 2012 | 发布Solr 4.0,引入SolrCloud |
| 2017 | 发布Solr 7.0,增强云功能 |
| 2022 | 发布Solr 9.0,支持Java 17+ |
1.3 Solr与Lucene #
Solr构建在Apache Lucene之上:
- Lucene:高性能全文搜索引擎库(Java)
- Solr:基于Lucene的企业级搜索服务器
- Solr提供REST API、管理界面、分布式搜索等高级功能
二、Solr特点 #
2.1 优点 #
1. 强大的全文搜索
bash
# 基础搜索
curl "http://localhost:8983/solr/mycore/select?q=title:search"
# 复杂查询
curl "http://localhost:8983/solr/mycore/select?q=title:search AND category:tech"
支持复杂查询语法、模糊搜索、通配符搜索等。
2. 分布式搜索
bash
# SolrCloud模式启动
bin/solr start -c -p 8983
SolrCloud提供分布式索引和搜索能力。
3. 近实时搜索
文档索引后立即可搜索,延迟通常在1秒以内。
4. 丰富的查询功能
- Faceting(分面搜索)
- Highlighting(高亮显示)
- Spell Checking(拼写检查)
- Auto-suggest(自动建议)
- More Like This(相似推荐)
5. 易于扩展
xml
<!-- 自定义请求处理器 -->
<requestHandler name="/custom" class="com.example.CustomHandler"/>
支持自定义插件、请求处理器、分析器等。
6. 管理界面
提供Web管理界面,方便监控和管理。
2.2 与Elasticsearch对比 #
| 特性 | Solr | Elasticsearch |
|---|---|---|
| 开发语言 | Java | Java |
| 底层引擎 | Lucene | Lucene |
| 查询语言 | Solr Query | Query DSL |
| 分布式 | SolrCloud | 原生分布式 |
| 学习曲线 | 较陡 | 较平缓 |
| 社区活跃度 | 活跃 | 非常活跃 |
| 文档完善度 | 完善 | 非常完善 |
| 实时性 | 近实时 | 近实时 |
三、应用领域 #
3.1 电商搜索 #
bash
# 商品搜索示例
curl "http://localhost:8983/solr/products/select" \
-d "q=iphone" \
-d "fq=category:手机" \
-d "facet=true" \
-d "facet.field=brand"
- 商品搜索
- 分类导航
- 价格筛选
- 品牌筛选
3.2 企业搜索 #
bash
# 文档搜索
curl "http://localhost:8983/solr/documents/select" \
-d "q=合同" \
-d "fq=type:pdf" \
-d "hl=true" \
-d "hl.fl=content"
- 文档管理
- 知识库搜索
- 内部搜索
3.3 日志分析 #
bash
# 日志搜索
curl "http://localhost:8983/solr/logs/select" \
-d "q=error" \
-d "fq=level:ERROR" \
-d "facet.range=timestamp"
- 应用日志
- 系统日志
- 访问日志
3.4 内容管理 #
- 新闻网站
- 博客平台
- 内容发布系统
四、为什么学习Solr #
4.1 企业级搜索需求 #
企业级搜索场景特点:
- 数据量大
- 查询复杂
- 高可用要求
- 实时性要求
4.2 技术栈优势 #
text
Java生态系统
├── Spring Boot集成
├── 大数据生态集成
└── 企业应用集成
4.3 就业需求 #
Solr在以下领域需求量大:
- 搜索工程师
- 大数据工程师
- 后端开发工程师
- 运维工程师
五、Solr架构 #
5.1 核心组件 #
text
┌─────────────────────────────────────┐
│ Solr Server │
├─────────────────────────────────────┤
│ ┌─────────┐ ┌─────────────────┐ │
│ │ Core 1 │ │ Core 2 │ │
│ │ ┌─────┐ │ │ ┌───────────┐ │ │
│ │ │Index│ │ │ │ Index │ │ │
│ │ └─────┘ │ │ └───────────┘ │ │
│ │ ┌─────┐ │ │ ┌───────────┐ │ │
│ │ │Conf │ │ │ │ Conf │ │ │
│ │ └─────┘ │ │ └───────────┘ │ │
│ └─────────┘ └─────────────────┘ │
├─────────────────────────────────────┤
│ Request Handlers │
├─────────────────────────────────────┤
│ Search Components │
├─────────────────────────────────────┤
│ Update Handlers │
└─────────────────────────────────────┘
5.2 SolrCloud架构 #
text
┌─────────────────────────────────────────────┐
│ ZooKeeper Ensemble │
│ (集群配置、Leader选举) │
└─────────────────────────────────────────────┘
│
┌─────────────┼─────────────┐
↓ ↓ ↓
┌───────────┐ ┌───────────┐ ┌───────────┐
│ Node 1 │ │ Node 2 │ │ Node 3 │
│ ┌───────┐ │ │ ┌───────┐ │ │ ┌───────┐ │
│ │Shard1 │ │ │ │Shard1 │ │ │ │Shard2 │ │
│ │Leader │ │ │ │Replica│ │ │ │Leader │ │
│ └───────┘ │ │ └───────┘ │ │ └───────┘ │
│ ┌───────┐ │ │ ┌───────┐ │ │ ┌───────┐ │
│ │Shard2 │ │ │ │Shard3 │ │ │ │Shard3 │ │
│ │Replica│ │ │ │Leader │ │ │ │Replica│ │
│ └───────┘ │ │ └───────┘ │ │ └───────┘ │
└───────────┘ └───────────┘ └───────────┘
六、学习路线 #
6.1 初级阶段 #
- 安装配置
- 核心概念
- 基础查询
- 文档操作
6.2 中级阶段 #
- Schema设计
- 分析器配置
- 复杂查询
- 聚合统计
6.3 高级阶段 #
- SolrCloud集群
- 性能优化
- 安全配置
- 运维管理
七、总结 #
Solr特点:
| 特点 | 说明 |
|---|---|
| 成熟稳定 | 十多年发展历史 |
| 功能丰富 | 搜索、分面、高亮等 |
| 可扩展 | 插件机制完善 |
| 分布式 | SolrCloud支持 |
| 企业级 | 大量生产案例 |
学习建议:
- 理解倒排索引原理
- 多动手实践查询
- 关注Schema设计
- 学习SolrCloud架构
- 结合实际项目学习
下一步,让我们开始安装Solr!
最后更新:2026-03-27