# 搜索引擎Solr的使用方法
## 目錄
1. [Solr簡介](#1-solr簡介)
2. [核心概念解析](#2-核心概念解析)
3. [環境搭建指南](#3-環境搭建指南)
4. [索引創建與管理](#4-索引創建與管理)
5. [查詢語法詳解](#5-查詢語法詳解)
6. [高級功能探索](#6-高級功能探索)
7. [性能優化策略](#7-性能優化策略)
8. [實際應用案例](#8-實際應用案例)
9. [常見問題解答](#9-常見問題解答)
## 1. Solr簡介
### 1.1 什么是Solr
Apache Solr是基于Lucene構建的開源企業級搜索平臺,提供:
- 分布式索引
- 容錯配置
- 近實時搜索
- RESTful API接口
### 1.2 發展歷程
2004年由CNET開發 → 2006年進入Apache孵化器 → 2007年成為頂級項目 → 持續更新至今
### 1.3 核心優勢
- 支持多種數據格式(JSON/XML/CSV等)
- 豐富的插件生態系統
- 水平擴展能力
- 強大的分詞支持(含中文)
## 2. 核心概念解析
### 2.1 核心組件架構
```mermaid
graph TD
A[客戶端] --> B[Solr Cloud]
B --> C[ZooKeeper]
B --> D[Shard1]
B --> E[Shard2]
D --> F[Replica1]
D --> G[Replica2]
| 術語 | 說明 |
|---|---|
| Collection | 邏輯索引的容器 |
| Shard | 索引的水平分區 |
| Replica | 分片的副本 |
| ZooKeeper | 分布式協調服務 |
# 下載解壓
wget https://solr.apache.org/downloads/solr-9.1.0.tgz
tar -xzf solr-9.1.0.tgz
# 啟動服務
bin/solr start -e cloud -noprompt
# 驗證安裝
curl http://localhost:8983/solr/admin/collections?action=LIST
ZK_HOST="zk1:2181,zk2:2181,zk3:2181"
SOLR_MODE="solrcloud"
<field name="title" type="text_general" indexed="true" stored="true"/>
<field name="content" type="text_cn" indexed="true" stored="false"/>
<fieldType name="text_cn" class="solr.TextField">
<analyzer class="org.apache.lucene.analysis.cn.smart.SmartChineseAnalyzer"/>
</fieldType>
<entity name="product" query="SELECT id,name,price FROM products">
<field column="id" name="id"/>
<field column="name" name="title"/>
</entity>
import requests
doc = {
"id": "book123",
"title": "Solr實戰指南"
}
requests.post(
"http://localhost:8983/solr/books/update",
json=[doc],
params={"commit": "true"}
)
GET /solr/books/select?q=title:"搜索引擎"&fq=price:[100 TO 500]&sort=pub_date desc
"apache solr"~5roam~0.8sol*title:solr^2 content:solr// 自定義IK Analyzer配置
public class IKAnalyzer extends TokenizerFactory {
@Override
public Tokenizer create(AttributeFactory factory) {
return new IKTokenizer(factory);
}
}
{"features":{"title_score":0.8,"pagerank":0.95},"label":1}
<lst name="features">
<str name="title_match">org.apache.solr.ltr.feature.SolrFeature</str>
</lst>
# solrconfig.xml
<mergePolicyFactory class="org.apache.solr.index.TieredMergePolicyFactory">
<int name="maxMergeAtOnce">10</int>
<double name="segmentsPerTier">5.0</double>
</mergePolicyFactory>
| 緩存類型 | 推薦大小 | 適用場景 |
|---|---|---|
| filterCache | 20%可用堆內存 | 高頻過濾條件 |
| queryResultCache | 10%可用堆內存 | 熱門查詢結果 |
{
"facet": {
"categories": {
"type": "terms",
"field": "category",
"limit": 10,
"facet": {
"avg_price": "avg(price)"
}
}
}
}
A:定期執行optimize操作并設置合理的合并策略
A:使用Solr的滾動重啟功能:
bin/solr restart -c -z zk_host:2181 -all
注:本文為技術概要,實際完整實現需根據具體業務場景調整配置參數和架構設計。建議參考官方文檔獲取最新信息。 “`
這篇文章結構完整,包含: 1. 技術原理說明 2. 具體配置示例 3. 可視化圖表輔助理解 4. 實戰場景解決方案 5. 典型問題處理建議
實際寫作時可對每個章節進行擴展: - 增加更多配置示例 - 補充性能測試數據 - 添加不同語言的客戶端代碼 - 深入特定業務場景分析
需要繼續擴展哪個部分可以告訴我,我可以提供更詳細的內容補充。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。