第 10 章
搜尋、推薦與管理系統裡的資料結構
系統之所以能快速搜尋、合理推薦與穩定管理資訊,背後往往是多種資料結構一起合作。真實世界很少只靠單一結構就能解決所有問題。
Combined Data Structures
預計閱讀時間:約 5 分鐘
本章開場
你在購物網站打幾個字,商品就跳出來;在影音平台看完一部片,系統很快推薦下一部;在公司知識庫搜尋一個關鍵詞,文件與標籤立刻被帶出。這些體驗看起來順暢,但背後其實是很多資料結構一起分工。
本章要解決的問題
一個真實系統同時要面對查找、分類、排序、推薦、關聯與權限管理時,為什麼不能只靠一種資料結構?又該如何理解它們彼此之間的合作?
核心概念
前面章節介紹的每一種結構,都像一種工具。陣列適合位置明確的資料,字典與雜湊適合快速查找,樹狀結構適合分類導覽,圖形結構適合描述關係,堆積適合處理優先順序。實務系統通常不是選一個,而是同時用好幾個。
例如搜尋系統可能先靠索引快速找資料,再用排序規則決定顯示順序;推薦系統可能用圖找出相似關係,再用其他結構存使用者偏好;任務管理系統可能同時用樹管理專案層級、用佇列追工作流、用字典查任務狀態。
真實系統不是資料結構單選題,而是根據問題把工具組合起來。
這種組合思維很重要。因為使用者看到的是一個整體體驗,但背後其實是不同結構各自扮演不同角色。
這在生活中像什麼
百貨公司導覽不只是一張清單。它會先有樓層分類,再有店櫃位置,還可能提供搜尋與推薦。你走進一個大型活動現場,也會先看總圖,再看分區,再查節目表。這些資訊服務很少只有一種整理方式。
同樣地,外送平台不只要列餐廳,還要讓你能搜尋、篩選、推薦、排序與看到配送關係。這些需求本身就暗示了不同結構要一起工作。
具體例子
- Netflix 視音平台:內容分類用樹狀結構,使用者觀看記錄用字典儲存,推薦引擎用圖連結相似內容,熱門內容排行用堆積改善顯示順序——四種結構各司其職。
- Google Maps 搜尋路線:地圖資料用圖表示道路連結,趕路時間用優先佇列計算最短路徑,區域索引用雜湊加速尋址,廣告點分類用樹狀結構管理,是最具代表性的多結構結合。
- 公司 CRM 系統:客戶資料用字典快速查尋,洽商互動歷程用連結串列保留順序,客戶分類用樹狀分層,高價值客戶用堆積式排序追蹤 VIP——這就是一個平凡日常工具背後的引擎。
- 專案管理平臺(如 Jira):專案與子任務用樹狀結構展開,任務流動用佇列按流程走,命名/標籤/狀態用字典查詢,緊急標記用堆積式排序推到首位。
- 圖書館經典搜尋機制:索引用字典/雜湊定位記錄位置,分類用樹狀結構指引主題,相關書目用圖連結,新資料優先顯示用堆積避免被埋沒,同樣是多結構共同支撐一個服務。
這在工作上有什麼用
公司的客戶資料系統、知識庫、企業資源管理系統、客服平台與專案系統,幾乎都是資料結構的綜合應用。知識庫要有分類樹、搜尋索引、標籤字典與權限結構;客服平台要有工單佇列、客戶資料查找、急件優先排序與流程節點串接。
如果設計者只會用一種思路看待所有問題,系統往往會變得笨重。真正成熟的設計,是知道每個需求適合哪一種資料安排方式,再把它們串成一套使用者感受良好的流程。
為什麼重要
- 它讓我們理解系統效能與體驗背後不是運氣,而是結構設計。
- 它幫助我們避免拿單一工具硬套所有問題。
- 它讓資料結構從單點知識,變成系統思維的一部分。
取捨同樣存在。設計越多結構,實作與維護也會更複雜。所以真正的重點不是堆很多名詞,而是根據需求做合理配置。
一句話總結
好系統不是只會用一種資料結構,而是知道什麼問題該交給什麼工具。
💭 捲輊三問
- 你每天用的某個 app(串流、地圖、電商),背後你覺得可能用了哪些資料結構的組合?
- 為什麼沒有一種「萬用結構」可以解決所有問題?
- 下次你看到一個功能很複雜的系統,你打算怎麼拆解它背後可能用了哪些工具?