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 初级阶段 #

  1. 安装配置
  2. 核心概念
  3. 基础查询
  4. 文档操作

6.2 中级阶段 #

  1. Schema设计
  2. 分析器配置
  3. 复杂查询
  4. 聚合统计

6.3 高级阶段 #

  1. SolrCloud集群
  2. 性能优化
  3. 安全配置
  4. 运维管理

七、总结 #

Solr特点:

特点 说明
成熟稳定 十多年发展历史
功能丰富 搜索、分面、高亮等
可扩展 插件机制完善
分布式 SolrCloud支持
企业级 大量生产案例

学习建议:

  • 理解倒排索引原理
  • 多动手实践查询
  • 关注Schema设计
  • 学习SolrCloud架构
  • 结合实际项目学习

下一步,让我们开始安装Solr!

最后更新:2026-03-27