动态

详情 返回 返回

搜索百科(2):Apache Solr — 企業級搜索的開源先鋒 - 动态 详情

大家好,我是 INFINI Labs 的石陽。

歡迎回到 《搜索百科》 專欄!每天 5 分鐘,帶你速覽一款搜索相關的技術或產品,同時還會帶你探索它們背後的技術原理、發展故事及上手體驗等。

上一篇我們認識了搜索技術的基石 Apache Lucene,今天我們將繼續這個旅程,瞭解基於 Lucene 構建的第一個成功商業級搜索平台 —— Apache Solr

Solr 是什麼?

Solr 是一款極速的開源多模態搜索平台,基於 Apache Lucene 的全文、向量和地理空間搜索能力構建而成。Solr 具備高可靠性、可擴展性和容錯性,支持分佈式索引、複製與負載均衡查詢,提供自動故障轉移與恢復、集中化配置等功能。如今,Solr 為全球眾多大型互聯網網站提供搜索和導航功能。

  • 首次發佈:2004 年,2006 年進入 Apache
  • 最新版本:截至 2025 年,已更新至 9.x 系列
  • 核心依賴:Apache Lucene
  • 開源協議:Apache License 2.0
  • 官方網址:https://solr.apache.org
  • GitHub 倉庫:https://github.com/apache/solr

它的定位是:把 Lucene 打造成獨立的企業級搜索服務。相比 Lucene 需要寫代碼調用,Solr 提供了 Web 管理界面、REST API 和配置文件,讓開發者更容易上手。

起源:從網站搜索到 Apache 頂級項目

Solr(讀作"solar")的故事始於 2004 年,當時 CNET 公司的開發人員 Yonik Seeley 需要為其新聞網站構建一個搜索功能。雖然 Lucene 提供了強大的核心搜索能力,但直接使用 Lucene 需要編寫大量 Java 代碼,缺乏開箱即用的功能。

Seeley 決定在 Lucene 之上構建一個更易用的搜索服務器,於是 Solr 誕生了。最初的目標很明確:通過 HTTP/XML 接口提供搜索服務,讓任何編程語言都能輕鬆集成搜索功能。

2006 年,Solr 捐贈給 Apache 基金會,2007 年成為頂級項目。2010 年,Solr 與 Lucene 項目合併,形成了今天我們所知的 Apache Lucene/Solr 項目。

技術架構

Index(索引)

Apache Solr 的索引就像是用於管理結構化 / 非結構化數據的“數據庫”。它以便於分析和全文檢索的方式存儲數據。

Query Parser(查詢解析器)

所有由客户端提交的查詢都會由查詢解析器處理。

Response Handler(響應處理器)

響應處理器負責為客户端生成合適格式的響應(如 JSON/XML/CSV)。

Update Handler(更新處理器)

更新處理器用於索引操作,即對索引中的數據進行插入、更新和刪除。例如,如果我們希望 MySQL 數據與 Apache Solr 保持同步,就需要創建一個負責同步的更新處理器。

功能亮點

  • 全文檢索:高效支持關鍵詞搜索、布爾查詢、短語匹配等。
  • 分面搜索(Faceted Search):可以對搜索結果進行分類和聚合統計。
  • 分佈式架構(SolrCloud):支持集羣部署、自動分片、副本和容錯。
  • 豐富的數據接口:提供 RESTful API,支持 JSON、XML、CSV 等多種格式的數據交互。
  • 擴展性與可定製性:通過插件機制支持多語言分詞、排序、評分模型等個性化定製。
  • 地理位置搜索:內置空間搜索能力,支持基於經緯度的範圍查詢和排序。

對比: Solr vs Elasticsearch 如何選擇?

雖然兩者都基於 Lucene,但在設計哲學上有所不同:

特性 Apache Solr Elasticsearch
定位 企業級搜索服務器 分佈式搜索和分析引擎
API 更標準化,遵循傳統 REST 更靈活,JSON 原生
分佈式 需要 ZooKeeper 協調 內置分佈式協調
上手難度 相對簡單,開箱即用 學習曲線較陡峭
生態系統 搜索功能更豐富 分析和可視化更強
適用場景 傳統企業搜索、電商 日誌分析、實時監控

簡單來説:Solr 更像"精裝房",開箱即用;Elasticsearch 更像"毛坯房",需要更多自定義但更靈活。

快速開始:5 分鐘搭建 Solr 服務

1. 下載和安裝

# 下載 8.x 版 Solr
wget https://dlcdn.apache.org/solr/solr/8.11.4/solr-8.11.4.tgz

# 解壓
tar -xzf solr-8.11.4.tgz

# 啓動 Solr(單機模式)
cd solr-8.11.4
bin/solr start

2. 創建 Core

# 創建測試 Core
bin/solr create -c test_core

# 查看 Core 狀態
bin/solr status

3. 索引文檔

# 使用 curl 索引 JSON 文檔
curl http://localhost:8983/solr/test_core/update -d '
[
  {"id": "1", "title": "Solr 入門指南", "content": "Apache Solr 是企業級搜索平台"},
  {"id": "2", "title": "搜索技術演進", "content": "從 Lucene 到 Solr 的技術發展"}
]' -H 'Content-type:application/json'

# 提交更改
curl http://localhost:8983/solr/test_core/update -d '<commit/>' -H 'Content-type:application/xml'

4. 執行搜索

# 搜索"Solr"
curl "http://localhost:8983/solr/test_core/select?q=content:Solr"

# 使用 JSON 格式返回
curl "http://localhost:8983/solr/test_core/select?q=content:Solr&wt=json"

執行搜索返回結果:

訪問 http://localhost:8983/solr 即可使用 Solr 的管理界面。

Dashboard:

Core Admin:

結語

從最初的公司內部工具,到成為全球範圍內廣泛使用的開源搜索引擎,Apache Solr 見證並推動了搜索技術的進化。儘管近年來 Elasticsearch、向量數據庫和 AI 驅動的搜索技術逐漸崛起,但 Solr 依然是許多企業可靠且成熟的選擇。它的故事不僅屬於開源社區,也代表了搜索技術發展的一個重要階段。


🚀 下期預告
在下一篇「搜索百科」中,我們將介紹它的明星兄弟 —— Elasticsearch

💬 三連互動

  1. 你現在還在用 Solr 嗎?
  2. 在 Solr 和 Elasticsearch 之間做過技術選型?
  3. 遇到過有趣的 Solr 使用案例或挑戰?

對搜索技術感興趣的朋友,歡迎關注《搜索百科》專欄,一起探討與學習!

✨ 推薦閲讀

  • 搜索百科(1):Lucene — 打開現代搜索世界的第一扇門

🔗 參考

  • Apache Solr 官方文檔
  • Apache Solr Fundamentals
原文:https://infinilabs.cn/blog/2025/search-wiki-2-solr/
user avatar hashdata 头像 cafebabe 头像 python-learn 头像 tdengine 头像 kasong 头像 feixi50 头像 zihuai1949 头像
点赞 7 用户, 点赞了这篇动态!
点赞

Add a new 评论

Some HTML is okay.