:-: **常用字典結構的數據結構**
| 數據結構 | 優缺點 |
| --- | --- |
| 排序列表Array/List | 使用二分法查找,不平衡。 |
| HashMap/TreeMap | 性能高,內存消耗大,幾乎是原始數據的三倍。 |
| Skip List | 跳躍表, 可快速查找詞語,在lucene、 redis、 Hbase等均有實現。相對于TreeMap等結構,特別適合高并發場景 。 |
| Trie | 字典樹 。適合英文詞典, 如果系統中存在大量字符串且這些字符串基本沒有公共前級,則相應的trie樹將非常消耗內存。 |
| Double Array Trie | 適合做中文詞典,內存占用小,很多分詞工具均采用此種算法 。 |
| Ternary Search Tree | 三叉樹,每一個node有3個節點, 兼具省空間和查詢快的優點 。 |
| Finite State Transducers (FST) | 一種有限狀態轉移機,Lucene 4有開源實現,并大量使用。 |
字典樹又稱單詞查找樹,Trie 樹,是一種樹形結構,是一種哈希樹的變種。典型應用是用于統計,排序和保存大量的字符串(但不僅限于字符串),所以經常被搜索引擎系統用于文本詞頻統計。
<br/>
它的優點是:利用字符串的公共前綴來減少查詢時間,最大限度地減少無謂的字符串比較,查詢效率比哈希樹高。
<br/>
Trie 的核心思想是空間換時間,利用字符串的公共前綴來降低查詢時間的開銷以達到提高效率的目的。
它有 3 個基本性質:
* 根節點不包含字符,除根節點外每一個節點都只包含一個字符。
* 從根節點到某一節點,路徑上經過的字符連接起來,為該節點對應的字符串。
* 每個節點的所有子節點包含的字符都不相同。
對于中文的字典樹,每個節點的子節點用一個哈希表存儲,這樣就不用浪費太大的空間,而且查詢速度上可以保留哈希的復雜度 O(1)。
- Elasticsearch是什么
- 全文搜索引擎
- Elasticsearch與Solr
- 數據結構
- 安裝Elasticsearch
- Linux單機安裝
- Windows單機安裝
- 安裝Kibana
- Linux安裝
- Windows安裝
- es基本語句
- 索引操作
- 文檔操作
- 映射操作
- 高級查詢
- es-JavaAPI
- maven依賴
- 索引操作
- 文檔操作
- 高級查詢
- es集群搭建
- Linux集群搭建
- Windows集群搭建
- 核心概念
- 索引(Index)
- 類型(Type)
- 文檔(Document)
- 字段(Field)
- 映射(Mapping)
- 分片(Shards)
- 副本(Replicas)
- 分配(Allocation)
- 系統架構
- 分布式集群
- 單節點集群
- 故障轉移
- 水平擴容
- 應對故障
- 路由計算
- 分片控制
- 寫流程
- 讀流程
- 更新流程
- 多文檔操作流程
- 分片原理
- 倒排索引
- 文檔搜索
- 動態更新索引
- 近實時搜索
- 持久化變更
- 段合并
- 文檔分析
- 內置分析器
- 分析器使用場景
- 測試分析器
- 指定分析器
- 自定義分析器
- 文檔處理
- 文檔沖突
- 樂觀并發控制
- 外部系統版本控制
- es優化
- 硬件選擇
- 分片策略
- 合理設置分片數
- 推遲分片分配
- 路由選擇
- 寫入速度優化
- 批量數據提交
- 優化存儲設備
- 合理使用合并
- 減少Refresh的次數
- 加大Flush設置
- 減少副本的數量
- 內存設置
- 重要配置
- es常見問題
- 為什么要使用Elasticsearch
- master選舉流程
- 集群腦裂問題
- 索引文檔流程
- 更新和刪除文檔流程
- 搜索流程
- ES部署在Linux時的優化方法
- GC方面ES需要注意的點
- ES對大數據量的聚合實現
- 并發時保證讀寫一致性
- 字典樹
- ES的倒排索引
- Spring Data Elasticsearch
- 環境搭建
- 索引操作
- 文檔操作