👉 點(diǎn)擊關(guān)注不迷路
👉 點(diǎn)擊關(guān)注不迷路
👉 點(diǎn)擊關(guān)注不迷路
文章大綱
- 1.2.2倒排索引原理與分詞器(`Analyzer`)
- 1. `倒排索引:搜索引擎的基石`
- 1.1 正排索引 vs 倒排索引
-
- 1.2 倒排索引核心結(jié)構(gòu)
- 壓縮效果對(duì)比(`1億文檔場(chǎng)景`):
- 1.3 性能優(yōu)化策略
- 2. 分詞器(`Analyzer`)工作機(jī)制
- 2.1 分詞器三層處理流程
- 2.2 內(nèi)置分詞器對(duì)比
- 分詞性能測(cè)試(處理10萬(wàn)條商品標(biāo)題):
- 2.3 中文分詞深度解決方案
- 3. 聯(lián)合應(yīng)用實(shí)戰(zhàn)案例
- 3.1 電商搜索優(yōu)化
- 3.2 日志多語(yǔ)言處理
- 3.3 敏感詞過(guò)濾系統(tǒng)
- 4. 性能對(duì)比與最佳實(shí)踐
- 4.1 `倒排索引配置建議`
- 4.2 分詞器選擇指南
- 4.3 聯(lián)合優(yōu)化最佳實(shí)踐
1.2.2倒排索引原理與分詞器(Analyzer
)
1. 倒排索引:搜索引擎的基石
1.1 正排索引 vs 倒排索引
索引類型 | 數(shù)據(jù)結(jié)構(gòu) | 典型查詢場(chǎng)景 | 時(shí)間復(fù)雜度 |
---|
正排索引 | 文檔ID → 字段內(nèi)容 | 已知ID查內(nèi)容(SELECT * ) | O(1) |
倒排索引 | 詞項(xiàng) → [文檔ID列表] | 關(guān)鍵詞搜索(WHERE text LIKE ) | O(log n) + O(m) |
示例數(shù)據(jù)對(duì)比:
文檔ID | 標(biāo)題 |
---|
1 | Elasticsearch實(shí)戰(zhàn) |
2 | 搜索引擎核心技術(shù) |
-
正排索引

-
倒排索引

1.2 倒排索引核心結(jié)構(gòu)
- 倒排索引 = 詞項(xiàng)字典(
Term Dictionary
) + 倒排列表(Posting List
)

壓縮效果對(duì)比(1億文檔場(chǎng)景
):
存儲(chǔ)方式 | 原始大小 | 壓縮后大小 | 查詢速度 |
---|
未壓縮文檔ID列表 | 400MB | - | 120ms |
Roaring Bitmaps | 400MB | 15MB | 45ms |
Roaring Bitmaps
:是一種用于高效存儲(chǔ)和操作稀疏位圖(bitmap)的數(shù)據(jù)結(jié)構(gòu),通過(guò)將一個(gè)大的位圖分割成多個(gè) 16
位的桶(bucket
),每個(gè)桶對(duì)應(yīng)一個(gè) 16
位的鍵值。 - 優(yōu)勢(shì)
- 節(jié)省空間:對(duì)于稀疏位圖,
Roaring Bitmaps
比傳統(tǒng)的位圖存儲(chǔ)方式節(jié)省大量的內(nèi)存空間。 - 高效操作:支持快速的并集、交集、差集等操作,操作速度快。
- 易于擴(kuò)展:可以方便地處理大規(guī)模的位圖數(shù)據(jù)。
- 存儲(chǔ)方式
- 數(shù)組存儲(chǔ):當(dāng)桶中元素較少時(shí),使用一個(gè)短整型數(shù)組來(lái)存儲(chǔ)這些元素。
- 位圖存儲(chǔ):當(dāng)桶中元素較多時(shí),使用傳統(tǒng)的位圖(
bitmap
)來(lái)存儲(chǔ)。

1.3 性能優(yōu)化策略
2. 分詞器(Analyzer
)工作機(jī)制
2.1 分詞器三層處理流程

示例:處理"Elasticsearch's
中文分詞"
-
- 字符過(guò)濾器:去除HTML標(biāo)簽、替換縮寫(如將
’s
替換為空)
→ “Elasticsearch
中文分詞”
-
- 分詞器:按空格/標(biāo)點(diǎn)切分
→ [“Elasticsearch
”, “中文”, “分詞”]
-
- Token過(guò)濾器:轉(zhuǎn)小寫、移除停用詞
→ [“elasticsearch
”, “中文”, “分詞”]
2.2 內(nèi)置分詞器對(duì)比
分詞器類型 | 處理邏輯 | 中文支持 | 示例輸入 → 輸出 |
---|
Standard | 按Unicode文本分割,轉(zhuǎn)小寫 | 差 | “Elasticsearch實(shí)戰(zhàn)” → [“elasticsearch”, “實(shí)戰(zhàn)”] |
Simple | 非字母字符切分,保留大寫 | 無(wú) | “Hello-World” → [“Hello”, “World”] |
Whitespace | 按空格切分,保留原始大小寫 | 無(wú) | “Hello World” → [“Hello”, “World”] |
IK (中文增強(qiáng)) | 智能語(yǔ)義切分 | 優(yōu)秀 | “搜索引擎” → [“搜索”, “引擎”, “搜索引擎”] |
分詞性能測(cè)試(處理10萬(wàn)條商品標(biāo)題):
分詞器 | 耗時(shí)(秒) | 內(nèi)存占用(GB) | 準(zhǔn)確率(F1值) |
---|
Standard | 4.2 | 1.8 | 0.62 |
IK | 6.7 | 2.5 | 0.89 |
Jieba | 5.9 | 2.1 | 0.91 |
2.3 中文分詞深度解決方案
-
痛點(diǎn)分析:
歧義切分
(如"南京市長(zhǎng)江大橋" → 南京/市長(zhǎng)/江大橋 或 南京市/長(zhǎng)江/大橋)- 新詞識(shí)別(如網(wǎng)絡(luò)用語(yǔ)"奧利給")
-
IK分詞器實(shí)戰(zhàn)配置:
PUT /news
{"settings": {"analysis": {"analyzer": {"ik_smart_custom": {"type": "custom","tokenizer": "ik_smart","filter": ["lowercase", "stopwords_filter"]}},"filter": {"stopwords_filter": {"type": "stop","stopwords": ["的", "是", "了"]}}}}
}
3. 聯(lián)合應(yīng)用實(shí)戰(zhàn)案例
3.1 電商搜索優(yōu)化
- 需求:提升"女士冬季羽絨服"搜索準(zhǔn)確率
- 解決方案:
"filter": {"synonym_filter": {"type": "synonym","synonyms": ["羽絨服 => 羽絨衣, 羽絨外套"]}
}
"mappings": {"properties": {"title": {"type": "text","index_options": "offsets" }}
}
- 效果:
- 搜索召回率提升37%
- 相關(guān)商品點(diǎn)擊率(
CTR
)從22%提升至41%
3.2 日志多語(yǔ)言處理
- 場(chǎng)景:國(guó)際業(yè)務(wù)日志含中/英/日文本
- 配置方案:
PUT /logs
{"settings": {"analysis": {"analyzer": {"multi_lang": {"type": "custom","char_filter": ["html_strip"],"tokenizer": "standard","filter": ["lowercase","cjk_width" ]}}}}
}
- 處理效果:
- 日文文本 “エラーメッセージ” → [“エラーメッセージ”]
- 中文文本 “錯(cuò)誤信息” → [“錯(cuò)”, “誤”, “信”, “息”]
3.3 敏感詞過(guò)濾系統(tǒng)
- 實(shí)現(xiàn)方案:
"char_filter": {"sensitive_filter": {"type": "mapping","mappings": ["傻X => **", "垃圾 => **"]}
}
"analyzer": {"safe_analyzer": {"char_filter": ["sensitive_filter"],"tokenizer": "ik_smart"}
}
- 測(cè)試結(jié)果:
- 原始文本:“這個(gè)產(chǎn)品簡(jiǎn)直是垃圾!”
- 處理后詞項(xiàng):[“這個(gè)”, “產(chǎn)品”, “簡(jiǎn)直”, “是”, “**”]
4. 性能對(duì)比與最佳實(shí)踐
4.1 倒排索引配置建議
場(chǎng)景 | 推薦配置 | 預(yù)期收益 |
---|
高頻短語(yǔ)查詢 | 啟用index_options: positions | 短語(yǔ)查詢速度提升3倍 |
大文本存儲(chǔ) | 禁用_source 字段 + 開(kāi)啟best_compression | 存儲(chǔ)空間減少40% |
實(shí)時(shí)性要求高 | 設(shè)置refresh_interval: 30s | 寫入吞吐量提升120% |
4.2 分詞器選擇指南
場(chǎng)景 | 推薦分詞器 | 關(guān)鍵特性 |
---|
中文搜索 | IK分詞器 | 細(xì)粒度切分 + 新詞識(shí)別 |
多語(yǔ)言混合 | 標(biāo)準(zhǔn)分詞器 + 小寫過(guò)濾 | 基礎(chǔ)分詞 + 統(tǒng)一規(guī)范化 |
代碼/日志分析 | 白名單分詞器 | 保留特殊符號(hào)(如HTTP_200 ) |
4.3 聯(lián)合優(yōu)化最佳實(shí)踐
-
- 冷熱數(shù)據(jù)分層
- 熱數(shù)據(jù):
SSD存儲(chǔ) + 高副本數(shù)(保障查詢性能)
- 冷數(shù)據(jù):HDD存儲(chǔ) + 禁用副本(降低成本)

-
- 混合索引策略
PUT /products
{"settings": {"index": {"number_of_shards": 6,"number_of_replicas": 1,"analysis": { ... }}},"mappings": {"dynamic_templates": [{"strings_as_keywords": {"match_mapping_type": "string","mapping": { "type": "keyword" }}}]}
}
-
- 監(jiān)控與調(diào)優(yōu)