服務

站內搜尋(Site Search)怎麼做?從 MySQL LIKE、FULLTEXT 到 Meilisearch/Typesense/Algolia 與語意搜尋的完整規劃

2026.08.17 · 31 次瀏覽
站內搜尋(Site Search)怎麼做?從 MySQL LIKE、FULLTEXT 到 Meilisearch/Typesense/Algolia 與語意搜尋的完整規劃

含繁體中文斷詞的真實成本、隱藏費用與 90 天落地路線圖

分享:

台中一家工具機零件型錄站,上月站內搜尋 8,412 次,其中 2,610 次(31%)零結果。查 log 才懂:客人打「軸承 6205」,資料庫寫「深溝球軸承6205ZZ」;打「油封」,型錄叫「迴轉軸密封件」。搜尋沒壞,它只會字串比對。零結果 session 跳出率 74%,全站平均 38%。Baymard 2026 基準顯示,56% 電商網站的搜尋體驗屬「中等或更差」

適用情境 × 不適用情境

該做

  • 可搜內容超過 800 筆,分類選單已點不完。
  • 同一商品有學名、俗名、型號、英文縮寫多種叫法。
  • GA4 搜尋事件佔 session 8% 以上,搜尋後轉換率明顯較高。
  • B2B 型錄、零件、法規知識庫這類使用者知道要什麼的內容。

不適用情境

  • 內容少於 300 筆的形象站:分類頁做好更划算。
  • 月流量低於 3,000 session:log 樣本太少,調同義詞只能靠猜。
  • 資料髒亂:規格塞在描述欄、料號未正規化,先清資料。
  • 沒人負責看報表:搜尋要持續餵養,不是一次性交付。
  • 單一 SKU 訂閱制或以預約為主的網站。

替代方案矩陣

方案繁中處理錯字容錯月成本 NT$適合
MySQL LIKE無斷詞,前置萬用字元讓索引失效0500 筆內後台
MySQL FULLTEXT + ngram官方 CJK ngram 切字,預設 token size 2,需自建中文停用詞02,000 筆內
Meilisearch/Typesense 自架Meilisearch 用 jieba 詞典斷詞、kvariant 做繁簡正規化內建VPS 800–1,2001 萬–100 萬筆
Algolia SaaSCJK 成熟、後台完整內建可分級20 萬次約 2,950不想養機器
Elasticsearch/OpenSearch 自架需裝 analysis-icu 或 smartcn需手調 fuzziness8GB 機 2,400 起百萬筆、複雜聚合
向量語意(hybrid)不靠斷詞,懂「適合送禮」這類描述天生容錯embedding 300–900知識庫、FAQ

完整流程拆解

階段時間做什麼交付物
Query log 盤點3 天埋 GA4 事件與 search_logs 表,收兩週查詢零結果 Top 100 清單
資料建模4 天定可搜欄位與權重,把規格拆成 facet索引 schema 與權重表
索引管線5 天Laravel Scout 串 Meilisearch,Queue 非同步、Observer 增量更新可重跑 reindex 指令
繁中調校5 天建自訂詞典、同義詞與停用詞,處理注音誤打與英數混排synonyms.json、詞典檔
前端體驗6 天autocomplete、facet 篩選、零結果引導頁InstantSearch.js 元件
量測交接4 天Metabase 追零結果率與 CTR@3;依 Google 對無限空間的建議以 robots.txt 擋搜尋 URL週報範本與維運手冊

真實成本完整拆解

以 6 萬筆商品、月 20 萬次搜尋估算。建置:基礎版 45 工時,NT$68,000;含 facet、hybrid 與儀表板的完整版 88 工時,NT$132,000。平台費Meilisearch Cloud 起價 US$20/月,用量型 US$30/月含 10 萬文件與 5 萬次搜尋;改走 Algolia Grow,前 1 萬次搜尋免費、之後每千次 US$0.50,20 萬次即 US$95(約 NT$2,950)。隱藏費用:全量重建索引每次佔機 1.5–3 小時、一年約 6 次;同義詞維運 NT$4,500/月;斷詞辭典每季 4 工時 NT$6,000;零結果告警與儀表板一次性 NT$9,000。第一年總持有成本 NT$14 萬–19 萬。

實施真相 vs 客戶想像

客戶想像實施真相
裝上 Meilisearch 就會準引擎只管召回。第一版通常還有 12–18% 零結果,要兩三輪 log 調校才壓到 5%。
繁體中文自動支援Meilisearch 靠 jieba 詞典並把繁體正規化成簡體變體,好處是繁簡通搜,代價是「乾」「幹」會被合併,專有名詞仍得自己補。
加個搜尋框兩天就好API 確實兩天,但把規格從描述欄拆成結構化欄位要 4–6 天,那才是最貴的部分。

常見陷阱 × 怎麼避開

  • LIKE 撐到十萬筆:前置萬用字元讓索引失效,查詢從 30ms 變 4 秒。解法:超過 2,000 筆改 FULLTEXT,超過 1 萬筆上 Meilisearch。
  • ngram token size 沒調:預設 2,搜單字「傘」完全搜不到,停用詞邏輯也與預設 parser 不同。解法:依常見查詢長度設定並自建停用詞表。
  • 料號被切碎:「6205ZZ」被切成「6205」與「ZZ」,排序全亂。解法:料號獨立成不斷詞的 keyword 欄位並給高權重。
  • 容錯開太猛:短料號差一字元就變另一件商品。解法:設最小容錯字長 5 字元,料號關閉容錯。
  • 零結果頁是死路Baymard 建議零結果頁必須給下一步。解法:自動放寬條件、推相近分類與熱門商品,並放客服入口。
  • 同步寫入索引:後台存檔直打索引 API,一逾時整筆失敗。解法:改 Queue 非同步並加每日校正 job。

成功指標 + 90 天路線圖

  • 1–30 天:埋 log 與 GA4 事件,產出零結果 Top 100,量出零結果率、搜尋後轉換率、CTR@3 基準線。
  • 31–60 天:Meilisearch 上線、autocomplete 與零結果頁改版。目標零結果率 31% 降到 12% 以下,CTR@3 從 41% 拉到 55%。
  • 61–90 天:依點擊調權重、對長尾查詢導入 hybrid 語意。目標零結果率 5% 以下、搜尋後轉換率為無搜尋 session 的 1.8 倍,並固定每月檢視例會。

決策清單

  • ☐ 可搜內容超過 800 筆?
  • ☐ 有記錄每一筆搜尋關鍵字嗎?
  • ☐ 知道目前零結果率嗎?
  • ☐ 同一商品有三種以上叫法?
  • ☐ 料號有固定格式可獨立成欄位?
  • ☐ 規格已從描述欄拆出來?
  • ☐ 需要 facet 篩選嗎?
  • ☐ 使用者常打錯字或注音誤打?
  • ☐ 月搜尋數超過 5 萬次?
  • ☐ 有人每月看搜尋報表?
  • ☐ robots.txt 擋了搜尋結果頁?
  • ☐ 重建索引有排程與回滾?
  • ☐ 預算含第一年維運費?

常見問題

MySQL FULLTEXT 加 ngram 就夠了嗎?

2,000 筆內、不需要容錯與 facet,MySQL 夠用且零成本。一旦要 typo tolerance、即時 autocomplete 與相關性排序,自己刻的工時會超過直接接 Meilisearch。分水嶺是有沒有人抱怨搜不到。

Meilisearch、Typesense、Algolia 怎麼選?

不想養機器、能接受用量計費選 Algolia;要控成本、資料留在自己機器選 Meilisearch 自架;要帳單可預測選 Typesense Cloud,它按叢集小時計費而非按筆數。三者都有 Laravel Scout driver。

繁中詞典一定要自己維護?

要。通用詞典不認得自有品牌、內部型號縮寫與行業黑話。第一版約 150–400 條,之後每季從零結果 log 補 20–40 條,一季 4 工時可維持。

下一步

ScriptWalker 的「站內搜尋建置與調校方案」NT$68,000 起,含 Laravel Scout 串接、繁中詞典初版、autocomplete 與零結果頁;完整版加 facet、hybrid 語意與 query log 儀表板,NT$132,000。把兩週搜尋 log 給我們,先免費做零結果分析。

分享: