{"content_id":"rl3zchhyg6","slug":"five-policies-before-ai-ecommerce-search-development","locale":"zh-hant","schema_type":"HowTo","category":"how_to","category_name":"操作教學","title":"開發 AI 購物商城搜尋前應先決定的5項營運政策","summary":"AI 可以快速寫出購物商城搜尋程式碼，但商品曝光標準與例外處理必須由營運者先行決定。本指南將排序、商品狀態、列表方式、搜尋範圍、日誌政策整理到實際實作與測試層級。","author":{"name":"Injoys Admin","url":"https://injoys.com/ko/about"},"key_points":["預設排序應以文件化的公式結合搜尋相關度與銷售、品質訊號，廣告曝光則必須與自然排序分離。","缺貨、暫時停售、銷售結束、召回應建模為不同狀態，並在搜尋、詳情、購物車、結帳中一致處理。","大型商品列表應依目的選擇分頁、載入更多或無限捲動，並確保 URL 狀態與返回時的復原。","不只商品名稱，也應將品牌、類別、屬性、同義詞、型號納入搜尋範圍，並將無結果畫面設計成獨立陳列區。","搜尋日誌可作為需求資料使用，但應最小化個人識別碼與敏感搜尋詞，並區分原文保存與彙總保存。"],"content_markdown":"AI 可以快速製作商品列表 API、搜尋框、排序按鈕。然而，**要展示哪些商品、隱藏哪些商品，以及把什麼稱為「推薦」**，不是程式碼，而是營運政策。購物商城搜尋不是單純的查詢功能，而是貨架配置、廣告版位、庫存處理、顧客體驗、資料收集結合在一起的決策系統。\n\n如果沒有提供政策，只指示「幫我做商品搜尋功能」，AI 可能會任意填入最新上架順、商品名稱部分一致、簡單分頁等熟悉的範例。即使程式碼可以執行，也可能不符合店鋪營運。代表性問題包括最新商品已售罄卻曝光在第一列、停售商品仍可加入購物車，以及顧客搜尋「蘋果」卻找不到「青松富士」等。\n\n## 搜尋排名不是技術功能，而是營運政策\n\n商品陳列順序可以由業者設計。不過，如果畫面傳達給消費者的意義與實際排名計算方式不一致，或是讓具有經濟利害關係的曝光看起來像一般推薦，法律與信任上的風險就會提高。\n\n公平交易委員會於 2024年 6月針對 Coupang 與 CPLB 的搜尋排名營運及員工撰寫購買評價等問題，宣布暫定 1,400億韓元的罰鍰，同年 8月依決議書基準確定罰鍰為 1,628億韓元。業者方面不服處分，而依 2026年 4月報導基準，相關撤銷訴訟仍在進行中。這個案例的實務教訓並不是「優待自家商品永遠違法」這種簡單命題。重點是必須在設計階段檢討：**標示為推薦究竟代表什麼、是否明確揭露廣告與自家利害關係、是否能用資料與文件說明排名變更**。\n\n法律適用可能會依服務結構與標示方式而有所不同，因此實際上線前，另行確認相關法令與最新執法案例會比較安全。\n\n## 一行提示詞造成的「快速完成版」失敗點\n\n| 未定政策 | AI 可能任意填入的實作 | 實際營運風險 |\n|---|---|---|\n| 預設排序 | `created_at DESC` | 最近上架但售罄或尚未審核的商品曝光在上方 |\n| 銷售狀態 | 只確認是否刪除 | 暫停銷售或召回商品被搜尋到或可下單 |\n| 列表載入 | 全量查詢或簡單無限捲動 | 回應緩慢、返回時遺失位置、難以比較 |\n| 搜尋範圍 | 只對商品名稱部分一致 | 品牌、品種、型號、同義詞搜尋失敗 |\n| 無結果 | 只回傳空陣列 | 購買意圖高的顧客立即離開 |\n| 日誌 | 原樣儲存搜尋字詞與會員、IP | 目的外收集、過度保存、敏感搜尋字詞曝光風險 |\n\nAI 可以補上需求的空白，但無法判斷該選擇是否符合店鋪策略與法律責任。因此在實作前，至少必須以文件確定以下五項政策。\n\n## 1. 排序預設值：什麼可以稱為「推薦順」\n\n預設排序是顧客最先看到的貨架。多數使用者不會更改排序選項，因此預設值會直接影響營收、庫存去化、新品培育、顧客滿意度。\n\n### 先拆分排名計算階段\n\n搜尋結果與其一次混合計算，不如依照以下順序拆分會更安全。\n\n1. **曝光資格判定：** 只將可銷售、可公開、非法律或營運阻擋對象的商品納入候選。\n2. **搜尋相關度計算：** 計算商品名稱、品牌、類別、屬性、同義詞與搜尋字詞有多相符。\n3. **自然排名計算：** 結合銷售速度、轉換率、評分可信度、配送品質等訊號。\n4. **套用商業規則：** 套用售罄扣分、新品探索機會、多樣性限制等。\n5. **結合廣告版位：** 廣告商品與自然排名分離插入，並明確標示。\n6. **穩定處理同分：** 分數相同時，用 `product_id` 等固定鍵決定順序。\n\n### 推薦分數必須是文件化的公式\n\n以下只是用來說明結構的範例，不是適用於所有購物商城的正解。\n\n```text\norganic_score =\n  0.45 × query_relevance\n+ 0.20 × conversion_rate_28d\n+ 0.15 × sales_velocity_14d\n+ 0.10 × rating_confidence\n+ 0.10 × fulfillment_quality\n```\n\n每個訊號都應正規化到相同範圍，並明示期間與彙總對象。單純平均星等可能會讓 1 則評論的 5 分商品高於 1,000 則評論的 4.8 分商品，因此最好使用同時反映評論數的校正分數。若只使用銷量，長期銷售的商品可能會永久占優，因此應同時查看最近期間的銷售速度與轉換率。\n\n### 必須決定的細項\n\n- 推薦順的目標是搜尋適配度、購買可能性、顧客滿意、庫存效率中的哪一項\n- 各訊號的彙總期間與更新週期\n- 取消率、退貨率、配送延遲、售罄可能性等扣分訊號\n- 給評論較少新品的探索機會與最高加分\n- 避免同一品牌或同一賣家過度占據上方的多樣性規則\n- 分數同分時使用的固定排序鍵\n- 留下排名公式版本、變更原因、套用時間、核准者的稽核紀錄\n- A/B 測試的成功指標與中止條件\n\n### 不要混合廣告與自然推薦\n\n可以反映廣告費、自家商品與否、高毛利等經濟利害關係，但若讓其被誤認為一般的「人氣順」或「推薦順」，就會有風險。公平交易委員會在 2025年高價商品銷售平台案件中，也針對購買付費選項的賣家商品會在預設排序中優先曝光的結構及相關標示提出問題。廣告商品應以獨立候選群與版位管理，並在卡片單位提供可識別的「廣告」或「贊助」標示，這是基本做法。管理員畫面應分開顯示廣告曝光規則與自然排名公式。\n\n## 2. 異常狀態商品：售罄與暫停銷售是不同狀態\n\n若只用 `is_sold_out` 處理所有例外，搜尋、詳情、購物車、訂單驗證會彼此不一致。至少必須分離**銷售狀態、庫存狀態、公開狀態、法規狀態**。\n\n### 建議狀態模型\n\n| 狀態 | 搜尋、列表 | 直接 URL 詳情 | 購物車、訂單 | 建議處理 |\n|---|---|---|---|---|\n| 銷售中且有庫存 | 正常曝光 | 正常顯示 | 可行 | 基本候選 |\n| 銷售中但暫時售罄 | 可顯示但扣分或後排 | 顯示售罄、補貨通知 | 不可 | 保留補貨可能性 |\n| 暫時停止銷售 | 預設隱藏 | 暫停說明 | 不可 | 恢復時復原 |\n| 銷售結束 | 從搜尋與類別隱藏 | 結束說明與替代商品 | 不可 | 保留既有連結與 CS 脈絡 |\n| 草稿、審核中 | 完全隱藏 | 僅有權限的管理員 | 不可 | 公開前審核 |\n| 召回、法律阻擋 | 完全隱藏 | 必要時安全公告 | 不可 | 安全說明優先於替代推薦 |\n\n售罄商品對補貨通知與掌握搜尋需求有價值，因此不必一律刪除。相反地，銷售結束商品應從一般列表排除，但可以向透過既有書籤或外部連結進入的顧客提供「銷售已結束」的說明與相似商品。是否保留詳情 URL 或以 `410 Gone` 結束，應依搜尋流入、法律公告必要性、替代內容價值決定。\n\n### 搜尋索引不是可下單與否的最終權限\n\n搜尋索引可能產生同步延遲。因此即使搜尋結果顯示有庫存，也必須在下一階段再次驗證。\n\n- 加入購物車時重新驗證銷售狀態與庫存\n- 進入訂單頁時重新驗證價格、折扣、庫存\n- 付款前進行庫存預留或原子性扣減\n- 發生暫停銷售事件時緊急移除搜尋索引\n- 監控索引延遲時間與失敗件數\n\n如果沒有這些規則，就會反覆發生搜尋畫面正常、卻只在付款階段失敗的 CS 事故。\n\n## 3. 列表曝光方式：分頁、載入更多、無限捲動要用哪一種\n\n若商品有數千、數萬個，就不應一次全部傳下去。不過，斷定「購物商城永遠應該用數字分頁」也不準確。以比較為中心的搜尋重視位置與狀態復原，而在類別探索中，「載入更多」可能更方便。\n\n| 方式 | 優點 | 缺點 | 適合情境 |\n|---|---|---|---|\n| 數字分頁 | 容易理解目前位置與結果規模，可重新造訪特定頁面 | 頁面切換中斷，跨頁比較麻煩 | 桌面搜尋、深度探索、可分享結果 |\n| 載入更多 | 保留既有商品，同時由使用者控制載入 | 結果非常多時 DOM 與記憶體變大 | 行動裝置、類別探索、中等規模結果 |\n| 無限捲動 | 連續探索自然 | 位置、結尾、整體規模不明確，返回復原困難 | 發現比比較更重要的動態牆型畫面 |\n\n實務上，可以優先考慮**搜尋結果採用分頁或「載入更多 + 可復原的頁面 URL」**，發現型推薦動態牆採用無限捲動。即使使用純無限捲動，也必須滿足以下條件。\n\n- 將搜尋字詞、排序、篩選、頁面或游標儲存在 URL 或可復原狀態中\n- 從詳情頁返回時，復原先前商品與捲動位置\n- 支援鍵盤探索、螢幕閱讀器、焦點移動\n- 提供可存取頁尾與主要導覽連結的替代方案\n- 提供載入失敗與重試 UI\n- 為每個結果群組準備可存取的唯一 URL 或連結結構\n\n### 偏移量與游標分頁\n\n像 `OFFSET 5000 LIMIT 40` 這樣的深層偏移量，在資料量大且更新頻繁時會越來越慢，也容易產生重複與遺漏。淺層頁面與管理員畫面使用偏移量較單純，但大規模搜尋使用傳遞最後結果排序鍵的游標方式會更穩定。\n\n```text\nORDER BY score DESC, product_id DESC\ncursor = last_score + last_product_id\n```\n\n如果只用分數作為游標，同分商品可能會被遺漏，因此應同時使用唯一鍵。若推薦分數即時且頻繁變動，也需要在搜尋工作階段期間固定快照版本或排名基準時間的政策。\n\n## 4. 搜尋範圍與無結果畫面：將顧客的表達連結到商品資料\n\n顧客不知道營運者登錄的精確商品名稱。若要讓尋找「蘋果」的顧客看到「青松富士」、「紅露」、「家用蘋果」，就必須同時設計商品資料與搜尋詞典。\n\n### 搜尋欄位優先順序\n\n| 欄位 | 建議優先順序 | 範例 |\n|---|---:|---|\n| SKU、型號、條碼 | 非常高 | `SM-S928N`, `880...` |\n| 商品名稱 | 高 | 青松富士蘋果 3kg |\n| 品牌、製造商 | 高 | Samsung, Apple |\n| 類別、商品類型 | 中等以上 | 水果、跑鞋 |\n| 核心屬性 | 中等以上 | 容量、顏色、規格、相容機型 |\n| 同義詞、別名、品種、標籤 | 中等以上 | 慢跑鞋↔跑鞋，蘋果↔富士 |\n| 詳細說明 | 低 | 為降低長篇說明雜訊而降低權重 |\n| 評論內文 | 選擇性 | 檢討品質、垃圾內容、個人資料後有限使用 |\n\n韓文搜尋中也必須考慮空格差異、字母分離、英文與韓文品牌標記、數字與單位、複合名詞。例如應建立正規化規則，讓「에어팟프로2」、「에어팟 프로 2」、「AirPods Pro 2」連結到同一商品群。\n\n### 建議搜尋流程\n\n1. 驗證輸入長度與允許字元。\n2. 正規化大小寫、空白、特殊字元、單位。\n3. 先確認是否與商品代碼精確一致。\n4. 套用斷詞與形態、拼字變形。\n5. 擴展營運者管理的同義詞與類別詞典。\n6. 以文字搜尋尋找候選。\n7. 必要時將語意搜尋用於輔助候選生成。\n8. 篩選銷售、公開、法規狀態。\n9. 計算自然分數，並另行結合廣告。\n10. 回傳結果與診斷資訊。\n\n即使導入生成式 AI 或向量搜尋，也不應弱化 SKU、品牌、型號等精確一致。在購物搜尋中，結合**精確搜尋 + 文字相關度 + 選擇性語意搜尋**的混合方式通常較安全。為避免 AI 編造目錄中不存在的商品、價格、庫存，所有回應都必須連結到實際商品 ID 與目前資料。\n\n### 無結果畫面是第二個貨架\n\n搜尋結果為零時，不要只顯示空白畫面。不過，也不應把無關的人氣商品混入並看起來像搜尋結果。\n\n建議構成如下。\n\n- 原樣顯示使用者輸入的搜尋字詞，並明確告知沒有一致商品\n- 錯字修正候選與同義詞建議\n- 若因篩選導致 0 筆，提示可移除的篩選條件\n- 以獨立標籤呈現擴大範圍後的結果\n- 區分並曝光相關類別、替代商品、整體人氣商品\n- 補貨、上架請求或連接客服中心\n- 將無結果搜尋事件記錄到管理員分析\n\n「無結果」與「套用篩選後無結果」是不同問題。如果原本有候選，但因價格、顏色篩選而變成 0 筆，放寬篩選最有用；如果目錄本身沒有商品，則應作為採購資料使用。\n\n## 5. 搜尋紀錄：同時管理市場調查資料與個人資料\n\n無結果搜尋字詞顯示顧客尋找但無法購買的需求。人氣搜尋字詞有助於陳列與庫存計畫，而搜尋後點擊、購物車、購買流程會成為評估搜尋品質的核心指標。\n\n然而，不能斷定「只儲存搜尋字詞與次數就永遠不是個人資料」。搜尋字詞本身可能包含電話號碼、訂單號碼、姓名、健康、宗教、性生活等敏感內容，若與帳號、IP、裝置資訊結合，識別或追蹤個人的可能性就會提高。\n\n### 建議收集項目\n\n| 類別 | 建議處理 |\n|---|---|\n| 正規化搜尋字詞 | 以日、時間單位彙總，並將原文保存期間最小化 |\n| 結果數 | 儲存是否 0 筆與區間值 |\n| 套用篩選、排序 | 只儲存搜尋品質分析所需範圍 |\n| 點擊、購物車、購買 | 盡可能以搜尋字詞單位彙總指標儲存 |\n| 工作階段連結 | 只有必要時使用短生命週期的隨機識別碼 |\n| 會員 ID、IP、精確位置 | 若沒有明確目的與依據，從搜尋分析日誌排除 |\n| 原文中的個人資料 | 遮罩或廢棄電子郵件、電話號碼、訂單號碼模式 |\n\n雜湊後的會員 ID 也不會自動變成匿名資訊。如果能重新連結到特定使用者，就必須作為假名資訊或個人資料處理。保存期間也不要一律決定，而應以目的、分析週期、安全風險為基準，分別設定原文與彙總資料。\n\n### 管理員儀表板需要的指標\n\n- 搜尋量與唯一搜尋字詞數\n- 無結果比例\n- 搜尋結果點擊率\n- 搜尋後購物車率與購買轉換率\n- 搜尋字詞修改率與篩選解除率\n- 售罄商品曝光比例\n- 上位結果集中度與品牌多樣性\n- 區分廣告與自然結果成果的指標\n- 搜尋索引新鮮度與索引失敗件數\n\n低頻原文搜尋字詞可能包含個人資料，因此只將超過最低彙總基準的項目曝光在營運者畫面，也是一種有用方法。\n\n## 實戰提示詞：將政策轉換為程式碼的方法\n\n比起大量使用開發術語，清楚寫出營運規則更重要。可以依服務情境填寫以下模板並提供給 AI。\n\n```text\n請設計並實作我們購物商城的商品搜尋功能。\n\n1. 曝光資格\n- 只將銷售中、公開狀態且沒有法規阻擋的商品納入搜尋候選。\n- 暫時售罄仍顯示，但排在相同條件的有庫存商品之後。\n- 銷售結束與暫時停止銷售從搜尋、類別隱藏。\n- 銷售結束商品的直接 URL 顯示結束說明與替代商品，並移除購買按鈕。\n\n2. 預設排序\n- 最大程度反映搜尋字詞相關度。\n- 反映最近 28日轉換率、最近 14日銷售速度、校正評分、配送品質。\n- 各權重可透過設定檔或管理員政策變更。\n- 同分時以 product_id 降冪穩定排序。\n- 廣告商品不要混入自然分數，而是放入獨立版位並標示為「廣告」。\n\n3. 列表探索\n- 一次回傳 40個。\n- 讓搜尋字詞、排序、篩選、頁面或游標可從 URL 復原。\n- 從詳情頁返回時，復原列表與捲動位置。\n- 大規模結果使用游標分頁。\n\n4. 搜尋範圍\n- SKU 與型號精確一致列為最高優先。\n- 搜尋商品名稱、品牌、類別、屬性、同義詞標籤。\n- 處理韓文空格與英文、韓文品牌變形。\n- 無結果時，區分顯示錯字建議、放寬篩選、相關類別、替代推薦。\n\n5. 搜尋日誌\n- 預設只儲存正規化搜尋字詞、時間區間、結果數、篩選、彙總點擊與購買指標。\n- 會員 ID 與 IP 不儲存在搜尋分析日誌。\n- 電子郵件、電話號碼、訂單號碼形式要遮罩。\n- 將原文保存期間與彙總保存期間分離為設定值。\n\n6. 技術需求\n- 一併設計資料模型、API 合約、搜尋索引、同步方式、例外處理、管理員指標。\n- 提出符合實際查詢模式的索引，並說明確認執行計畫的方法。\n- 即使在搜尋索引延遲情況下，也要在購物車與付款階段重新驗證狀態、價格、庫存。\n- 撰寫單元測試、整合測試、效能測試、可及性測試情境。\n\n開始實作前，如果有我尚未決定且會影響結果的政策，請先提問；若有任意決定的假設，請以獨立清單標示。\n```\n\n最後一句是將 AI 從單純程式碼生成器轉變為需求檢討夥伴的核心裝置。不過，不應只停留在接收問題，而必須將確定的答案反映到政策文件與測試條件中。\n\n## 實作設計：將政策固定到資料與 API\n\n### 資料模型範例\n\n```text\nproducts\n- product_id\n- sales_status\n- stock_status\n- visibility_status\n- compliance_status\n- brand_id\n- category_id\n- searchable_name\n- search_tags\n- price\n- inventory_quantity\n- ranking_feature_version\n- updated_at\n```\n\n不要在一個欄位中放入多個意義。例如若只有 `status = 1`，就無法知道它代表可銷售、可公開、有庫存、通過法規中的哪一種。狀態轉移也應以表格管理，定義從草稿移動到銷售中、從銷售中移動到結束時所需的審核與事件。\n\n### API 回應中應包含的資訊\n\n- 正規化搜尋字詞\n- 已套用的排序與篩選\n- 結果群組與下一個游標\n- 結果數或近似結果數\n- 售罄、銷售狀態徽章\n- 是否為廣告與廣告標示文案\n- 是否進行錯字修正、搜尋範圍擴大\n- 搜尋政策版本與追蹤用請求 ID\n\n內部除錯資訊如原始分數與商業上敏感的權重，沒有必要原樣曝光在顧客 API 中。相反地，營運者應能以請求 ID 重現排名計算路徑。\n\n### 索引應依實際查詢模式設計\n\n一般而言，狀態篩選與排序使用的欄位應檢討 B-tree 系列索引，全文搜尋文件則檢討倒排索引系列。如果是 PostgreSQL，可以使用 `tsvector` 與 GIN 索引；若需要相似字串搜尋，可以使用 `pg_trgm`。即使使用外部搜尋引擎，原則也相同。\n\n```sql\nCREATE INDEX idx_products_visibility\nON products (visibility_status, sales_status, compliance_status);\n\nCREATE INDEX idx_products_search_document\nON products USING GIN (search_document);\n```\n\n索引越多，寫入成本與儲存空間也會增加。不要只靠預估決定，而應以實際查詢與資料分布確認 `EXPLAIN ANALYZE`、慢查詢日誌、負載測試。商品數增加時，應同時查看 p95、p99 延遲、逾時率、索引新鮮度，而不只是平均回應時間。\n\n### 接上生成式 AI 時要增加的安全裝置\n\n- 商品是否存在、價格、庫存、配送日只使用目錄 API 結果\n- 記錄模型產生的搜尋字詞擴展與原文，並限制過度擴展\n- 精確 SKU、型號搜尋優先於語意搜尋\n- 暫停銷售、召回篩選同樣套用於 AI 搜尋候選\n- 追蹤回應中曝光的商品 ID 與依據欄位\n- 模型失敗時回退到一般文字搜尋\n- 即使商品說明或評論中有提示詞注入性句子，也要分離，避免作為系統指示執行\n\n## 上線前驗收測試\n\n| 情境 | 預期結果 |\n|---|---|\n| 昨天上架的售罄商品與持續銷售的有庫存商品同時存在 | 售罄商品不會占據預設上方 |\n| 搜尋銷售結束商品 | 列表中不存在，直接 URL 顯示結束說明與不可購買狀態 |\n| 廣告商品曝光在第 1 位版位 | 可在卡片上立即識別為廣告 |\n| 套用篩選後 0 筆 | 提示移除篩選建議與原本是否存在候選 |\n| 搜尋「러닝화」、「조깅화」 | 依同義詞政策一致曝光相關商品群 |\n| 開啟詳情後返回 | 搜尋字詞、篩選、排序、列表、捲動位置復原 |\n| 多個商品分數相同 | 即使反覆切換頁面，也以固定順序維持無重複、無遺漏 |\n| 搜尋索引中仍有庫存 | 在購物車、付款階段以最新庫存阻擋 |\n| 搜尋字詞包含電子郵件、電話號碼 | 儲存日誌前遮罩或廢棄 |\n| 大量同時搜尋 | 符合已定義的 p95 延遲與錯誤率基準 |\n| 管理員搜尋字詞儀表板 | 低頻原文與敏感模式不會原樣曝光 |\n| 變更排名權重 | 記錄政策版本、核准者、套用時間、前後指標 |\n\n## 營運階段應重複進行的工作\n\n搜尋不是開發一次就結束的功能。商品組成、季節、促銷、顧客表達都會改變，因此應將以下週期納入營運流程。\n\n1. 每週檢討無結果搜尋字詞與暴增搜尋字詞。\n2. 透過核准程序更新同義詞與類別對應。\n3. 一併查看售罄曝光率、點擊率、轉換率、搜尋字詞修改率。\n4. 權重變更應在離線評估與受限 A/B 測試後再擴大。\n5. 分別稽核廣告、自家商品、自然結果的曝光比重。\n6. 定期檢查搜尋日誌的保存期間、存取權限、遮罩失敗。\n7. 以實際流量重新檢討索引使用率與慢查詢。\n\n## 結論\n\nAI 可以快速製作搜尋 API 與畫面，但無法決定哪些商品有資格站到顧客面前。實戰型購物商城搜尋，必須先將**排序預設值、商品狀態、列表探索、搜尋範圍與無結果處理、搜尋日誌**確定為政策，並在資料模型、API、索引、測試、管理員指標中一致反映該政策時，才算完成。\n\n即使程式撰寫可以自動化，陳列原則與責任也不會自動產生。最好的 AI 提示詞不是冗長困難的開發術語，而是清楚區分營運者已決定的政策與尚未決定問題的文件。","content_html":"\u003cp\u003eAI 可以快速製作商品列表 API、搜尋框、排序按鈕。然而，\u003cstrong\u003e要展示哪些商品、隱藏哪些商品，以及把什麼稱為「推薦」\u003c/strong\u003e，不是程式碼，而是營運政策。購物商城搜尋不是單純的查詢功能，而是貨架配置、廣告版位、庫存處理、顧客體驗、資料收集結合在一起的決策系統。\u003c/p\u003e\n\u003cp\u003e如果沒有提供政策，只指示「幫我做商品搜尋功能」，AI 可能會任意填入最新上架順、商品名稱部分一致、簡單分頁等熟悉的範例。即使程式碼可以執行，也可能不符合店鋪營運。代表性問題包括最新商品已售罄卻曝光在第一列、停售商品仍可加入購物車，以及顧客搜尋「蘋果」卻找不到「青松富士」等。\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#%E6%90%9C%E5%B0%8B%E6%8E%92%E5%90%8D%E4%B8%8D%E6%98%AF%E6%8A%80%E8%A1%93%E5%8A%9F%E8%83%BD%E8%80%8C%E6%98%AF%E7%87%9F%E9%81%8B%E6%94%BF%E7%AD%96\" class=\"anchor\" id=\"搜尋排名不是技術功能而是營運政策\"\u003e\u003c/a\u003e搜尋排名不是技術功能，而是營運政策\u003c/h2\u003e\n\u003cp\u003e商品陳列順序可以由業者設計。不過，如果畫面傳達給消費者的意義與實際排名計算方式不一致，或是讓具有經濟利害關係的曝光看起來像一般推薦，法律與信任上的風險就會提高。\u003c/p\u003e\n\u003cp\u003e公平交易委員會於 2024年 6月針對 Coupang 與 CPLB 的搜尋排名營運及員工撰寫購買評價等問題，宣布暫定 1,400億韓元的罰鍰，同年 8月依決議書基準確定罰鍰為 1,628億韓元。業者方面不服處分，而依 2026年 4月報導基準，相關撤銷訴訟仍在進行中。這個案例的實務教訓並不是「優待自家商品永遠違法」這種簡單命題。重點是必須在設計階段檢討：\u003cstrong\u003e標示為推薦究竟代表什麼、是否明確揭露廣告與自家利害關係、是否能用資料與文件說明排名變更\u003c/strong\u003e。\u003c/p\u003e\n\u003cp\u003e法律適用可能會依服務結構與標示方式而有所不同，因此實際上線前，另行確認相關法令與最新執法案例會比較安全。\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#%E4%B8%80%E8%A1%8C%E6%8F%90%E7%A4%BA%E8%A9%9E%E9%80%A0%E6%88%90%E7%9A%84%E5%BF%AB%E9%80%9F%E5%AE%8C%E6%88%90%E7%89%88%E5%A4%B1%E6%95%97%E9%BB%9E\" class=\"anchor\" id=\"一行提示詞造成的快速完成版失敗點\"\u003e\u003c/a\u003e一行提示詞造成的「快速完成版」失敗點\u003c/h2\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003e未定政策\u003c/th\u003e\n\u003cth\u003eAI 可能任意填入的實作\u003c/th\u003e\n\u003cth\u003e實際營運風險\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"未定政策\"\u003e預設排序\u003c/td\u003e\n\u003ctd data-label=\"AI 可能任意填入的實作\"\u003e\u003ccode\u003ecreated_at DESC\u003c/code\u003e\u003c/td\u003e\n\u003ctd data-label=\"實際營運風險\"\u003e最近上架但售罄或尚未審核的商品曝光在上方\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"未定政策\"\u003e銷售狀態\u003c/td\u003e\n\u003ctd data-label=\"AI 可能任意填入的實作\"\u003e只確認是否刪除\u003c/td\u003e\n\u003ctd data-label=\"實際營運風險\"\u003e暫停銷售或召回商品被搜尋到或可下單\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"未定政策\"\u003e列表載入\u003c/td\u003e\n\u003ctd data-label=\"AI 可能任意填入的實作\"\u003e全量查詢或簡單無限捲動\u003c/td\u003e\n\u003ctd data-label=\"實際營運風險\"\u003e回應緩慢、返回時遺失位置、難以比較\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"未定政策\"\u003e搜尋範圍\u003c/td\u003e\n\u003ctd data-label=\"AI 可能任意填入的實作\"\u003e只對商品名稱部分一致\u003c/td\u003e\n\u003ctd data-label=\"實際營運風險\"\u003e品牌、品種、型號、同義詞搜尋失敗\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"未定政策\"\u003e無結果\u003c/td\u003e\n\u003ctd data-label=\"AI 可能任意填入的實作\"\u003e只回傳空陣列\u003c/td\u003e\n\u003ctd data-label=\"實際營運風險\"\u003e購買意圖高的顧客立即離開\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"未定政策\"\u003e日誌\u003c/td\u003e\n\u003ctd data-label=\"AI 可能任意填入的實作\"\u003e原樣儲存搜尋字詞與會員、IP\u003c/td\u003e\n\u003ctd data-label=\"實際營運風險\"\u003e目的外收集、過度保存、敏感搜尋字詞曝光風險\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003eAI 可以補上需求的空白，但無法判斷該選擇是否符合店鋪策略與法律責任。因此在實作前，至少必須以文件確定以下五項政策。\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#1-%E6%8E%92%E5%BA%8F%E9%A0%90%E8%A8%AD%E5%80%BC%E4%BB%80%E9%BA%BC%E5%8F%AF%E4%BB%A5%E7%A8%B1%E7%82%BA%E6%8E%A8%E8%96%A6%E9%A0%86\" class=\"anchor\" id=\"1-排序預設值什麼可以稱為推薦順\"\u003e\u003c/a\u003e1. 排序預設值：什麼可以稱為「推薦順」\u003c/h2\u003e\n\u003cp\u003e預設排序是顧客最先看到的貨架。多數使用者不會更改排序選項，因此預設值會直接影響營收、庫存去化、新品培育、顧客滿意度。\u003c/p\u003e\n\u003ch3\u003e\n\u003ca href=\"#%E5%85%88%E6%8B%86%E5%88%86%E6%8E%92%E5%90%8D%E8%A8%88%E7%AE%97%E9%9A%8E%E6%AE%B5\" class=\"anchor\" id=\"先拆分排名計算階段\"\u003e\u003c/a\u003e先拆分排名計算階段\u003c/h3\u003e\n\u003cp\u003e搜尋結果與其一次混合計算，不如依照以下順序拆分會更安全。\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cstrong\u003e曝光資格判定：\u003c/strong\u003e 只將可銷售、可公開、非法律或營運阻擋對象的商品納入候選。\u003c/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e搜尋相關度計算：\u003c/strong\u003e 計算商品名稱、品牌、類別、屬性、同義詞與搜尋字詞有多相符。\u003c/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e自然排名計算：\u003c/strong\u003e 結合銷售速度、轉換率、評分可信度、配送品質等訊號。\u003c/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e套用商業規則：\u003c/strong\u003e 套用售罄扣分、新品探索機會、多樣性限制等。\u003c/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e結合廣告版位：\u003c/strong\u003e 廣告商品與自然排名分離插入，並明確標示。\u003c/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e穩定處理同分：\u003c/strong\u003e 分數相同時，用 \u003ccode\u003eproduct_id\u003c/code\u003e 等固定鍵決定順序。\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3\u003e\n\u003ca href=\"#%E6%8E%A8%E8%96%A6%E5%88%86%E6%95%B8%E5%BF%85%E9%A0%88%E6%98%AF%E6%96%87%E4%BB%B6%E5%8C%96%E7%9A%84%E5%85%AC%E5%BC%8F\" class=\"anchor\" id=\"推薦分數必須是文件化的公式\"\u003e\u003c/a\u003e推薦分數必須是文件化的公式\u003c/h3\u003e\n\u003cp\u003e以下只是用來說明結構的範例，不是適用於所有購物商城的正解。\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\u003cspan\u003eorganic_score =\n\u003c/span\u003e\u003cspan\u003e  0.45 × query_relevance\n\u003c/span\u003e\u003cspan\u003e+ 0.20 × conversion_rate_28d\n\u003c/span\u003e\u003cspan\u003e+ 0.15 × sales_velocity_14d\n\u003c/span\u003e\u003cspan\u003e+ 0.10 × rating_confidence\n\u003c/span\u003e\u003cspan\u003e+ 0.10 × fulfillment_quality\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e每個訊號都應正規化到相同範圍，並明示期間與彙總對象。單純平均星等可能會讓 1 則評論的 5 分商品高於 1,000 則評論的 4.8 分商品，因此最好使用同時反映評論數的校正分數。若只使用銷量，長期銷售的商品可能會永久占優，因此應同時查看最近期間的銷售速度與轉換率。\u003c/p\u003e\n\u003ch3\u003e\n\u003ca href=\"#%E5%BF%85%E9%A0%88%E6%B1%BA%E5%AE%9A%E7%9A%84%E7%B4%B0%E9%A0%85\" class=\"anchor\" id=\"必須決定的細項\"\u003e\u003c/a\u003e必須決定的細項\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e推薦順的目標是搜尋適配度、購買可能性、顧客滿意、庫存效率中的哪一項\u003c/li\u003e\n\u003cli\u003e各訊號的彙總期間與更新週期\u003c/li\u003e\n\u003cli\u003e取消率、退貨率、配送延遲、售罄可能性等扣分訊號\u003c/li\u003e\n\u003cli\u003e給評論較少新品的探索機會與最高加分\u003c/li\u003e\n\u003cli\u003e避免同一品牌或同一賣家過度占據上方的多樣性規則\u003c/li\u003e\n\u003cli\u003e分數同分時使用的固定排序鍵\u003c/li\u003e\n\u003cli\u003e留下排名公式版本、變更原因、套用時間、核准者的稽核紀錄\u003c/li\u003e\n\u003cli\u003eA/B 測試的成功指標與中止條件\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\n\u003ca href=\"#%E4%B8%8D%E8%A6%81%E6%B7%B7%E5%90%88%E5%BB%A3%E5%91%8A%E8%88%87%E8%87%AA%E7%84%B6%E6%8E%A8%E8%96%A6\" class=\"anchor\" id=\"不要混合廣告與自然推薦\"\u003e\u003c/a\u003e不要混合廣告與自然推薦\u003c/h3\u003e\n\u003cp\u003e可以反映廣告費、自家商品與否、高毛利等經濟利害關係，但若讓其被誤認為一般的「人氣順」或「推薦順」，就會有風險。公平交易委員會在 2025年高價商品銷售平台案件中，也針對購買付費選項的賣家商品會在預設排序中優先曝光的結構及相關標示提出問題。廣告商品應以獨立候選群與版位管理，並在卡片單位提供可識別的「廣告」或「贊助」標示，這是基本做法。管理員畫面應分開顯示廣告曝光規則與自然排名公式。\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#2-%E7%95%B0%E5%B8%B8%E7%8B%80%E6%85%8B%E5%95%86%E5%93%81%E5%94%AE%E7%BD%84%E8%88%87%E6%9A%AB%E5%81%9C%E9%8A%B7%E5%94%AE%E6%98%AF%E4%B8%8D%E5%90%8C%E7%8B%80%E6%85%8B\" class=\"anchor\" id=\"2-異常狀態商品售罄與暫停銷售是不同狀態\"\u003e\u003c/a\u003e2. 異常狀態商品：售罄與暫停銷售是不同狀態\u003c/h2\u003e\n\u003cp\u003e若只用 \u003ccode\u003eis_sold_out\u003c/code\u003e 處理所有例外，搜尋、詳情、購物車、訂單驗證會彼此不一致。至少必須分離\u003cstrong\u003e銷售狀態、庫存狀態、公開狀態、法規狀態\u003c/strong\u003e。\u003c/p\u003e\n\u003ch3\u003e\n\u003ca href=\"#%E5%BB%BA%E8%AD%B0%E7%8B%80%E6%85%8B%E6%A8%A1%E5%9E%8B\" class=\"anchor\" id=\"建議狀態模型\"\u003e\u003c/a\u003e建議狀態模型\u003c/h3\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003e狀態\u003c/th\u003e\n\u003cth\u003e搜尋、列表\u003c/th\u003e\n\u003cth\u003e直接 URL 詳情\u003c/th\u003e\n\u003cth\u003e購物車、訂單\u003c/th\u003e\n\u003cth\u003e建議處理\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"狀態\"\u003e銷售中且有庫存\u003c/td\u003e\n\u003ctd data-label=\"搜尋、列表\"\u003e正常曝光\u003c/td\u003e\n\u003ctd data-label=\"直接 URL 詳情\"\u003e正常顯示\u003c/td\u003e\n\u003ctd data-label=\"購物車、訂單\"\u003e可行\u003c/td\u003e\n\u003ctd data-label=\"建議處理\"\u003e基本候選\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"狀態\"\u003e銷售中但暫時售罄\u003c/td\u003e\n\u003ctd data-label=\"搜尋、列表\"\u003e可顯示但扣分或後排\u003c/td\u003e\n\u003ctd data-label=\"直接 URL 詳情\"\u003e顯示售罄、補貨通知\u003c/td\u003e\n\u003ctd data-label=\"購物車、訂單\"\u003e不可\u003c/td\u003e\n\u003ctd data-label=\"建議處理\"\u003e保留補貨可能性\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"狀態\"\u003e暫時停止銷售\u003c/td\u003e\n\u003ctd data-label=\"搜尋、列表\"\u003e預設隱藏\u003c/td\u003e\n\u003ctd data-label=\"直接 URL 詳情\"\u003e暫停說明\u003c/td\u003e\n\u003ctd data-label=\"購物車、訂單\"\u003e不可\u003c/td\u003e\n\u003ctd data-label=\"建議處理\"\u003e恢復時復原\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"狀態\"\u003e銷售結束\u003c/td\u003e\n\u003ctd data-label=\"搜尋、列表\"\u003e從搜尋與類別隱藏\u003c/td\u003e\n\u003ctd data-label=\"直接 URL 詳情\"\u003e結束說明與替代商品\u003c/td\u003e\n\u003ctd data-label=\"購物車、訂單\"\u003e不可\u003c/td\u003e\n\u003ctd data-label=\"建議處理\"\u003e保留既有連結與 CS 脈絡\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"狀態\"\u003e草稿、審核中\u003c/td\u003e\n\u003ctd data-label=\"搜尋、列表\"\u003e完全隱藏\u003c/td\u003e\n\u003ctd data-label=\"直接 URL 詳情\"\u003e僅有權限的管理員\u003c/td\u003e\n\u003ctd data-label=\"購物車、訂單\"\u003e不可\u003c/td\u003e\n\u003ctd data-label=\"建議處理\"\u003e公開前審核\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"狀態\"\u003e召回、法律阻擋\u003c/td\u003e\n\u003ctd data-label=\"搜尋、列表\"\u003e完全隱藏\u003c/td\u003e\n\u003ctd data-label=\"直接 URL 詳情\"\u003e必要時安全公告\u003c/td\u003e\n\u003ctd data-label=\"購物車、訂單\"\u003e不可\u003c/td\u003e\n\u003ctd data-label=\"建議處理\"\u003e安全說明優先於替代推薦\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003e售罄商品對補貨通知與掌握搜尋需求有價值，因此不必一律刪除。相反地，銷售結束商品應從一般列表排除，但可以向透過既有書籤或外部連結進入的顧客提供「銷售已結束」的說明與相似商品。是否保留詳情 URL 或以 \u003ccode\u003e410 Gone\u003c/code\u003e 結束，應依搜尋流入、法律公告必要性、替代內容價值決定。\u003c/p\u003e\n\u003ch3\u003e\n\u003ca href=\"#%E6%90%9C%E5%B0%8B%E7%B4%A2%E5%BC%95%E4%B8%8D%E6%98%AF%E5%8F%AF%E4%B8%8B%E5%96%AE%E8%88%87%E5%90%A6%E7%9A%84%E6%9C%80%E7%B5%82%E6%AC%8A%E9%99%90\" class=\"anchor\" id=\"搜尋索引不是可下單與否的最終權限\"\u003e\u003c/a\u003e搜尋索引不是可下單與否的最終權限\u003c/h3\u003e\n\u003cp\u003e搜尋索引可能產生同步延遲。因此即使搜尋結果顯示有庫存，也必須在下一階段再次驗證。\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e加入購物車時重新驗證銷售狀態與庫存\u003c/li\u003e\n\u003cli\u003e進入訂單頁時重新驗證價格、折扣、庫存\u003c/li\u003e\n\u003cli\u003e付款前進行庫存預留或原子性扣減\u003c/li\u003e\n\u003cli\u003e發生暫停銷售事件時緊急移除搜尋索引\u003c/li\u003e\n\u003cli\u003e監控索引延遲時間與失敗件數\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e如果沒有這些規則，就會反覆發生搜尋畫面正常、卻只在付款階段失敗的 CS 事故。\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#3-%E5%88%97%E8%A1%A8%E6%9B%9D%E5%85%89%E6%96%B9%E5%BC%8F%E5%88%86%E9%A0%81%E8%BC%89%E5%85%A5%E6%9B%B4%E5%A4%9A%E7%84%A1%E9%99%90%E6%8D%B2%E5%8B%95%E8%A6%81%E7%94%A8%E5%93%AA%E4%B8%80%E7%A8%AE\" class=\"anchor\" id=\"3-列表曝光方式分頁載入更多無限捲動要用哪一種\"\u003e\u003c/a\u003e3. 列表曝光方式：分頁、載入更多、無限捲動要用哪一種\u003c/h2\u003e\n\u003cp\u003e若商品有數千、數萬個，就不應一次全部傳下去。不過，斷定「購物商城永遠應該用數字分頁」也不準確。以比較為中心的搜尋重視位置與狀態復原，而在類別探索中，「載入更多」可能更方便。\u003c/p\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003e方式\u003c/th\u003e\n\u003cth\u003e優點\u003c/th\u003e\n\u003cth\u003e缺點\u003c/th\u003e\n\u003cth\u003e適合情境\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"方式\"\u003e數字分頁\u003c/td\u003e\n\u003ctd data-label=\"優點\"\u003e容易理解目前位置與結果規模，可重新造訪特定頁面\u003c/td\u003e\n\u003ctd data-label=\"缺點\"\u003e頁面切換中斷，跨頁比較麻煩\u003c/td\u003e\n\u003ctd data-label=\"適合情境\"\u003e桌面搜尋、深度探索、可分享結果\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"方式\"\u003e載入更多\u003c/td\u003e\n\u003ctd data-label=\"優點\"\u003e保留既有商品，同時由使用者控制載入\u003c/td\u003e\n\u003ctd data-label=\"缺點\"\u003e結果非常多時 DOM 與記憶體變大\u003c/td\u003e\n\u003ctd data-label=\"適合情境\"\u003e行動裝置、類別探索、中等規模結果\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"方式\"\u003e無限捲動\u003c/td\u003e\n\u003ctd data-label=\"優點\"\u003e連續探索自然\u003c/td\u003e\n\u003ctd data-label=\"缺點\"\u003e位置、結尾、整體規模不明確，返回復原困難\u003c/td\u003e\n\u003ctd data-label=\"適合情境\"\u003e發現比比較更重要的動態牆型畫面\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003e實務上，可以優先考慮\u003cstrong\u003e搜尋結果採用分頁或「載入更多 + 可復原的頁面 URL」\u003c/strong\u003e，發現型推薦動態牆採用無限捲動。即使使用純無限捲動，也必須滿足以下條件。\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e將搜尋字詞、排序、篩選、頁面或游標儲存在 URL 或可復原狀態中\u003c/li\u003e\n\u003cli\u003e從詳情頁返回時，復原先前商品與捲動位置\u003c/li\u003e\n\u003cli\u003e支援鍵盤探索、螢幕閱讀器、焦點移動\u003c/li\u003e\n\u003cli\u003e提供可存取頁尾與主要導覽連結的替代方案\u003c/li\u003e\n\u003cli\u003e提供載入失敗與重試 UI\u003c/li\u003e\n\u003cli\u003e為每個結果群組準備可存取的唯一 URL 或連結結構\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\n\u003ca href=\"#%E5%81%8F%E7%A7%BB%E9%87%8F%E8%88%87%E6%B8%B8%E6%A8%99%E5%88%86%E9%A0%81\" class=\"anchor\" id=\"偏移量與游標分頁\"\u003e\u003c/a\u003e偏移量與游標分頁\u003c/h3\u003e\n\u003cp\u003e像 \u003ccode\u003eOFFSET 5000 LIMIT 40\u003c/code\u003e 這樣的深層偏移量，在資料量大且更新頻繁時會越來越慢，也容易產生重複與遺漏。淺層頁面與管理員畫面使用偏移量較單純，但大規模搜尋使用傳遞最後結果排序鍵的游標方式會更穩定。\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\u003cspan\u003eORDER BY score DESC, product_id DESC\n\u003c/span\u003e\u003cspan\u003ecursor = last_score + last_product_id\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e如果只用分數作為游標，同分商品可能會被遺漏，因此應同時使用唯一鍵。若推薦分數即時且頻繁變動，也需要在搜尋工作階段期間固定快照版本或排名基準時間的政策。\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#4-%E6%90%9C%E5%B0%8B%E7%AF%84%E5%9C%8D%E8%88%87%E7%84%A1%E7%B5%90%E6%9E%9C%E7%95%AB%E9%9D%A2%E5%B0%87%E9%A1%A7%E5%AE%A2%E7%9A%84%E8%A1%A8%E9%81%94%E9%80%A3%E7%B5%90%E5%88%B0%E5%95%86%E5%93%81%E8%B3%87%E6%96%99\" class=\"anchor\" id=\"4-搜尋範圍與無結果畫面將顧客的表達連結到商品資料\"\u003e\u003c/a\u003e4. 搜尋範圍與無結果畫面：將顧客的表達連結到商品資料\u003c/h2\u003e\n\u003cp\u003e顧客不知道營運者登錄的精確商品名稱。若要讓尋找「蘋果」的顧客看到「青松富士」、「紅露」、「家用蘋果」，就必須同時設計商品資料與搜尋詞典。\u003c/p\u003e\n\u003ch3\u003e\n\u003ca href=\"#%E6%90%9C%E5%B0%8B%E6%AC%84%E4%BD%8D%E5%84%AA%E5%85%88%E9%A0%86%E5%BA%8F\" class=\"anchor\" id=\"搜尋欄位優先順序\"\u003e\u003c/a\u003e搜尋欄位優先順序\u003c/h3\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003e欄位\u003c/th\u003e\n\u003cth\u003e建議優先順序\u003c/th\u003e\n\u003cth\u003e範例\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"欄位\"\u003eSKU、型號、條碼\u003c/td\u003e\n\u003ctd data-label=\"建議優先順序\"\u003e非常高\u003c/td\u003e\n\u003ctd data-label=\"範例\"\u003e\n\u003ccode\u003eSM-S928N\u003c/code\u003e, \u003ccode\u003e880...\u003c/code\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"欄位\"\u003e商品名稱\u003c/td\u003e\n\u003ctd data-label=\"建議優先順序\"\u003e高\u003c/td\u003e\n\u003ctd data-label=\"範例\"\u003e青松富士蘋果 3kg\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"欄位\"\u003e品牌、製造商\u003c/td\u003e\n\u003ctd data-label=\"建議優先順序\"\u003e高\u003c/td\u003e\n\u003ctd data-label=\"範例\"\u003eSamsung, Apple\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"欄位\"\u003e類別、商品類型\u003c/td\u003e\n\u003ctd data-label=\"建議優先順序\"\u003e中等以上\u003c/td\u003e\n\u003ctd data-label=\"範例\"\u003e水果、跑鞋\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"欄位\"\u003e核心屬性\u003c/td\u003e\n\u003ctd data-label=\"建議優先順序\"\u003e中等以上\u003c/td\u003e\n\u003ctd data-label=\"範例\"\u003e容量、顏色、規格、相容機型\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"欄位\"\u003e同義詞、別名、品種、標籤\u003c/td\u003e\n\u003ctd data-label=\"建議優先順序\"\u003e中等以上\u003c/td\u003e\n\u003ctd data-label=\"範例\"\u003e慢跑鞋↔跑鞋，蘋果↔富士\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"欄位\"\u003e詳細說明\u003c/td\u003e\n\u003ctd data-label=\"建議優先順序\"\u003e低\u003c/td\u003e\n\u003ctd data-label=\"範例\"\u003e為降低長篇說明雜訊而降低權重\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"欄位\"\u003e評論內文\u003c/td\u003e\n\u003ctd data-label=\"建議優先順序\"\u003e選擇性\u003c/td\u003e\n\u003ctd data-label=\"範例\"\u003e檢討品質、垃圾內容、個人資料後有限使用\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003e韓文搜尋中也必須考慮空格差異、字母分離、英文與韓文品牌標記、數字與單位、複合名詞。例如應建立正規化規則，讓「에어팟프로2」、「에어팟 프로 2」、「AirPods Pro 2」連結到同一商品群。\u003c/p\u003e\n\u003ch3\u003e\n\u003ca href=\"#%E5%BB%BA%E8%AD%B0%E6%90%9C%E5%B0%8B%E6%B5%81%E7%A8%8B\" class=\"anchor\" id=\"建議搜尋流程\"\u003e\u003c/a\u003e建議搜尋流程\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e驗證輸入長度與允許字元。\u003c/li\u003e\n\u003cli\u003e正規化大小寫、空白、特殊字元、單位。\u003c/li\u003e\n\u003cli\u003e先確認是否與商品代碼精確一致。\u003c/li\u003e\n\u003cli\u003e套用斷詞與形態、拼字變形。\u003c/li\u003e\n\u003cli\u003e擴展營運者管理的同義詞與類別詞典。\u003c/li\u003e\n\u003cli\u003e以文字搜尋尋找候選。\u003c/li\u003e\n\u003cli\u003e必要時將語意搜尋用於輔助候選生成。\u003c/li\u003e\n\u003cli\u003e篩選銷售、公開、法規狀態。\u003c/li\u003e\n\u003cli\u003e計算自然分數，並另行結合廣告。\u003c/li\u003e\n\u003cli\u003e回傳結果與診斷資訊。\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e即使導入生成式 AI 或向量搜尋，也不應弱化 SKU、品牌、型號等精確一致。在購物搜尋中，結合\u003cstrong\u003e精確搜尋 + 文字相關度 + 選擇性語意搜尋\u003c/strong\u003e的混合方式通常較安全。為避免 AI 編造目錄中不存在的商品、價格、庫存，所有回應都必須連結到實際商品 ID 與目前資料。\u003c/p\u003e\n\u003ch3\u003e\n\u003ca href=\"#%E7%84%A1%E7%B5%90%E6%9E%9C%E7%95%AB%E9%9D%A2%E6%98%AF%E7%AC%AC%E4%BA%8C%E5%80%8B%E8%B2%A8%E6%9E%B6\" class=\"anchor\" id=\"無結果畫面是第二個貨架\"\u003e\u003c/a\u003e無結果畫面是第二個貨架\u003c/h3\u003e\n\u003cp\u003e搜尋結果為零時，不要只顯示空白畫面。不過，也不應把無關的人氣商品混入並看起來像搜尋結果。\u003c/p\u003e\n\u003cp\u003e建議構成如下。\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e原樣顯示使用者輸入的搜尋字詞，並明確告知沒有一致商品\u003c/li\u003e\n\u003cli\u003e錯字修正候選與同義詞建議\u003c/li\u003e\n\u003cli\u003e若因篩選導致 0 筆，提示可移除的篩選條件\u003c/li\u003e\n\u003cli\u003e以獨立標籤呈現擴大範圍後的結果\u003c/li\u003e\n\u003cli\u003e區分並曝光相關類別、替代商品、整體人氣商品\u003c/li\u003e\n\u003cli\u003e補貨、上架請求或連接客服中心\u003c/li\u003e\n\u003cli\u003e將無結果搜尋事件記錄到管理員分析\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e「無結果」與「套用篩選後無結果」是不同問題。如果原本有候選，但因價格、顏色篩選而變成 0 筆，放寬篩選最有用；如果目錄本身沒有商品，則應作為採購資料使用。\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#5-%E6%90%9C%E5%B0%8B%E7%B4%80%E9%8C%84%E5%90%8C%E6%99%82%E7%AE%A1%E7%90%86%E5%B8%82%E5%A0%B4%E8%AA%BF%E6%9F%A5%E8%B3%87%E6%96%99%E8%88%87%E5%80%8B%E4%BA%BA%E8%B3%87%E6%96%99\" class=\"anchor\" id=\"5-搜尋紀錄同時管理市場調查資料與個人資料\"\u003e\u003c/a\u003e5. 搜尋紀錄：同時管理市場調查資料與個人資料\u003c/h2\u003e\n\u003cp\u003e無結果搜尋字詞顯示顧客尋找但無法購買的需求。人氣搜尋字詞有助於陳列與庫存計畫，而搜尋後點擊、購物車、購買流程會成為評估搜尋品質的核心指標。\u003c/p\u003e\n\u003cp\u003e然而，不能斷定「只儲存搜尋字詞與次數就永遠不是個人資料」。搜尋字詞本身可能包含電話號碼、訂單號碼、姓名、健康、宗教、性生活等敏感內容，若與帳號、IP、裝置資訊結合，識別或追蹤個人的可能性就會提高。\u003c/p\u003e\n\u003ch3\u003e\n\u003ca href=\"#%E5%BB%BA%E8%AD%B0%E6%94%B6%E9%9B%86%E9%A0%85%E7%9B%AE\" class=\"anchor\" id=\"建議收集項目\"\u003e\u003c/a\u003e建議收集項目\u003c/h3\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003e類別\u003c/th\u003e\n\u003cth\u003e建議處理\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"類別\"\u003e正規化搜尋字詞\u003c/td\u003e\n\u003ctd data-label=\"建議處理\"\u003e以日、時間單位彙總，並將原文保存期間最小化\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"類別\"\u003e結果數\u003c/td\u003e\n\u003ctd data-label=\"建議處理\"\u003e儲存是否 0 筆與區間值\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"類別\"\u003e套用篩選、排序\u003c/td\u003e\n\u003ctd data-label=\"建議處理\"\u003e只儲存搜尋品質分析所需範圍\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"類別\"\u003e點擊、購物車、購買\u003c/td\u003e\n\u003ctd data-label=\"建議處理\"\u003e盡可能以搜尋字詞單位彙總指標儲存\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"類別\"\u003e工作階段連結\u003c/td\u003e\n\u003ctd data-label=\"建議處理\"\u003e只有必要時使用短生命週期的隨機識別碼\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"類別\"\u003e會員 ID、IP、精確位置\u003c/td\u003e\n\u003ctd data-label=\"建議處理\"\u003e若沒有明確目的與依據，從搜尋分析日誌排除\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"類別\"\u003e原文中的個人資料\u003c/td\u003e\n\u003ctd data-label=\"建議處理\"\u003e遮罩或廢棄電子郵件、電話號碼、訂單號碼模式\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003e雜湊後的會員 ID 也不會自動變成匿名資訊。如果能重新連結到特定使用者，就必須作為假名資訊或個人資料處理。保存期間也不要一律決定，而應以目的、分析週期、安全風險為基準，分別設定原文與彙總資料。\u003c/p\u003e\n\u003ch3\u003e\n\u003ca href=\"#%E7%AE%A1%E7%90%86%E5%93%A1%E5%84%80%E8%A1%A8%E6%9D%BF%E9%9C%80%E8%A6%81%E7%9A%84%E6%8C%87%E6%A8%99\" class=\"anchor\" id=\"管理員儀表板需要的指標\"\u003e\u003c/a\u003e管理員儀表板需要的指標\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e搜尋量與唯一搜尋字詞數\u003c/li\u003e\n\u003cli\u003e無結果比例\u003c/li\u003e\n\u003cli\u003e搜尋結果點擊率\u003c/li\u003e\n\u003cli\u003e搜尋後購物車率與購買轉換率\u003c/li\u003e\n\u003cli\u003e搜尋字詞修改率與篩選解除率\u003c/li\u003e\n\u003cli\u003e售罄商品曝光比例\u003c/li\u003e\n\u003cli\u003e上位結果集中度與品牌多樣性\u003c/li\u003e\n\u003cli\u003e區分廣告與自然結果成果的指標\u003c/li\u003e\n\u003cli\u003e搜尋索引新鮮度與索引失敗件數\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e低頻原文搜尋字詞可能包含個人資料，因此只將超過最低彙總基準的項目曝光在營運者畫面，也是一種有用方法。\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#%E5%AF%A6%E6%88%B0%E6%8F%90%E7%A4%BA%E8%A9%9E%E5%B0%87%E6%94%BF%E7%AD%96%E8%BD%89%E6%8F%9B%E7%82%BA%E7%A8%8B%E5%BC%8F%E7%A2%BC%E7%9A%84%E6%96%B9%E6%B3%95\" class=\"anchor\" id=\"實戰提示詞將政策轉換為程式碼的方法\"\u003e\u003c/a\u003e實戰提示詞：將政策轉換為程式碼的方法\u003c/h2\u003e\n\u003cp\u003e比起大量使用開發術語，清楚寫出營運規則更重要。可以依服務情境填寫以下模板並提供給 AI。\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\u003cspan\u003e請設計並實作我們購物商城的商品搜尋功能。\n\u003c/span\u003e\u003cspan\u003e\n\u003c/span\u003e\u003cspan\u003e1. 曝光資格\n\u003c/span\u003e\u003cspan\u003e- 只將銷售中、公開狀態且沒有法規阻擋的商品納入搜尋候選。\n\u003c/span\u003e\u003cspan\u003e- 暫時售罄仍顯示，但排在相同條件的有庫存商品之後。\n\u003c/span\u003e\u003cspan\u003e- 銷售結束與暫時停止銷售從搜尋、類別隱藏。\n\u003c/span\u003e\u003cspan\u003e- 銷售結束商品的直接 URL 顯示結束說明與替代商品，並移除購買按鈕。\n\u003c/span\u003e\u003cspan\u003e\n\u003c/span\u003e\u003cspan\u003e2. 預設排序\n\u003c/span\u003e\u003cspan\u003e- 最大程度反映搜尋字詞相關度。\n\u003c/span\u003e\u003cspan\u003e- 反映最近 28日轉換率、最近 14日銷售速度、校正評分、配送品質。\n\u003c/span\u003e\u003cspan\u003e- 各權重可透過設定檔或管理員政策變更。\n\u003c/span\u003e\u003cspan\u003e- 同分時以 product_id 降冪穩定排序。\n\u003c/span\u003e\u003cspan\u003e- 廣告商品不要混入自然分數，而是放入獨立版位並標示為「廣告」。\n\u003c/span\u003e\u003cspan\u003e\n\u003c/span\u003e\u003cspan\u003e3. 列表探索\n\u003c/span\u003e\u003cspan\u003e- 一次回傳 40個。\n\u003c/span\u003e\u003cspan\u003e- 讓搜尋字詞、排序、篩選、頁面或游標可從 URL 復原。\n\u003c/span\u003e\u003cspan\u003e- 從詳情頁返回時，復原列表與捲動位置。\n\u003c/span\u003e\u003cspan\u003e- 大規模結果使用游標分頁。\n\u003c/span\u003e\u003cspan\u003e\n\u003c/span\u003e\u003cspan\u003e4. 搜尋範圍\n\u003c/span\u003e\u003cspan\u003e- SKU 與型號精確一致列為最高優先。\n\u003c/span\u003e\u003cspan\u003e- 搜尋商品名稱、品牌、類別、屬性、同義詞標籤。\n\u003c/span\u003e\u003cspan\u003e- 處理韓文空格與英文、韓文品牌變形。\n\u003c/span\u003e\u003cspan\u003e- 無結果時，區分顯示錯字建議、放寬篩選、相關類別、替代推薦。\n\u003c/span\u003e\u003cspan\u003e\n\u003c/span\u003e\u003cspan\u003e5. 搜尋日誌\n\u003c/span\u003e\u003cspan\u003e- 預設只儲存正規化搜尋字詞、時間區間、結果數、篩選、彙總點擊與購買指標。\n\u003c/span\u003e\u003cspan\u003e- 會員 ID 與 IP 不儲存在搜尋分析日誌。\n\u003c/span\u003e\u003cspan\u003e- 電子郵件、電話號碼、訂單號碼形式要遮罩。\n\u003c/span\u003e\u003cspan\u003e- 將原文保存期間與彙總保存期間分離為設定值。\n\u003c/span\u003e\u003cspan\u003e\n\u003c/span\u003e\u003cspan\u003e6. 技術需求\n\u003c/span\u003e\u003cspan\u003e- 一併設計資料模型、API 合約、搜尋索引、同步方式、例外處理、管理員指標。\n\u003c/span\u003e\u003cspan\u003e- 提出符合實際查詢模式的索引，並說明確認執行計畫的方法。\n\u003c/span\u003e\u003cspan\u003e- 即使在搜尋索引延遲情況下，也要在購物車與付款階段重新驗證狀態、價格、庫存。\n\u003c/span\u003e\u003cspan\u003e- 撰寫單元測試、整合測試、效能測試、可及性測試情境。\n\u003c/span\u003e\u003cspan\u003e\n\u003c/span\u003e\u003cspan\u003e開始實作前，如果有我尚未決定且會影響結果的政策，請先提問；若有任意決定的假設，請以獨立清單標示。\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e最後一句是將 AI 從單純程式碼生成器轉變為需求檢討夥伴的核心裝置。不過，不應只停留在接收問題，而必須將確定的答案反映到政策文件與測試條件中。\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#%E5%AF%A6%E4%BD%9C%E8%A8%AD%E8%A8%88%E5%B0%87%E6%94%BF%E7%AD%96%E5%9B%BA%E5%AE%9A%E5%88%B0%E8%B3%87%E6%96%99%E8%88%87-api\" class=\"anchor\" id=\"實作設計將政策固定到資料與-api\"\u003e\u003c/a\u003e實作設計：將政策固定到資料與 API\u003c/h2\u003e\n\u003ch3\u003e\n\u003ca href=\"#%E8%B3%87%E6%96%99%E6%A8%A1%E5%9E%8B%E7%AF%84%E4%BE%8B\" class=\"anchor\" id=\"資料模型範例\"\u003e\u003c/a\u003e資料模型範例\u003c/h3\u003e\n\u003cpre\u003e\u003ccode\u003e\u003cspan\u003eproducts\n\u003c/span\u003e\u003cspan\u003e- product_id\n\u003c/span\u003e\u003cspan\u003e- sales_status\n\u003c/span\u003e\u003cspan\u003e- stock_status\n\u003c/span\u003e\u003cspan\u003e- visibility_status\n\u003c/span\u003e\u003cspan\u003e- compliance_status\n\u003c/span\u003e\u003cspan\u003e- brand_id\n\u003c/span\u003e\u003cspan\u003e- category_id\n\u003c/span\u003e\u003cspan\u003e- searchable_name\n\u003c/span\u003e\u003cspan\u003e- search_tags\n\u003c/span\u003e\u003cspan\u003e- price\n\u003c/span\u003e\u003cspan\u003e- inventory_quantity\n\u003c/span\u003e\u003cspan\u003e- ranking_feature_version\n\u003c/span\u003e\u003cspan\u003e- updated_at\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e不要在一個欄位中放入多個意義。例如若只有 \u003ccode\u003estatus = 1\u003c/code\u003e，就無法知道它代表可銷售、可公開、有庫存、通過法規中的哪一種。狀態轉移也應以表格管理，定義從草稿移動到銷售中、從銷售中移動到結束時所需的審核與事件。\u003c/p\u003e\n\u003ch3\u003e\n\u003ca href=\"#api-%E5%9B%9E%E6%87%89%E4%B8%AD%E6%87%89%E5%8C%85%E5%90%AB%E7%9A%84%E8%B3%87%E8%A8%8A\" class=\"anchor\" id=\"api-回應中應包含的資訊\"\u003e\u003c/a\u003eAPI 回應中應包含的資訊\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e正規化搜尋字詞\u003c/li\u003e\n\u003cli\u003e已套用的排序與篩選\u003c/li\u003e\n\u003cli\u003e結果群組與下一個游標\u003c/li\u003e\n\u003cli\u003e結果數或近似結果數\u003c/li\u003e\n\u003cli\u003e售罄、銷售狀態徽章\u003c/li\u003e\n\u003cli\u003e是否為廣告與廣告標示文案\u003c/li\u003e\n\u003cli\u003e是否進行錯字修正、搜尋範圍擴大\u003c/li\u003e\n\u003cli\u003e搜尋政策版本與追蹤用請求 ID\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e內部除錯資訊如原始分數與商業上敏感的權重，沒有必要原樣曝光在顧客 API 中。相反地，營運者應能以請求 ID 重現排名計算路徑。\u003c/p\u003e\n\u003ch3\u003e\n\u003ca href=\"#%E7%B4%A2%E5%BC%95%E6%87%89%E4%BE%9D%E5%AF%A6%E9%9A%9B%E6%9F%A5%E8%A9%A2%E6%A8%A1%E5%BC%8F%E8%A8%AD%E8%A8%88\" class=\"anchor\" id=\"索引應依實際查詢模式設計\"\u003e\u003c/a\u003e索引應依實際查詢模式設計\u003c/h3\u003e\n\u003cp\u003e一般而言，狀態篩選與排序使用的欄位應檢討 B-tree 系列索引，全文搜尋文件則檢討倒排索引系列。如果是 PostgreSQL，可以使用 \u003ccode\u003etsvector\u003c/code\u003e 與 GIN 索引；若需要相似字串搜尋，可以使用 \u003ccode\u003epg_trgm\u003c/code\u003e。即使使用外部搜尋引擎，原則也相同。\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\u003cspan\u003eCREATE INDEX \u003c/span\u003e\u003cspan\u003eidx_products_visibility\n\u003c/span\u003e\u003cspan\u003eON\u003c/span\u003e\u003cspan\u003e products (visibility_status, sales_status, compliance_status);\n\u003c/span\u003e\u003cspan\u003e\n\u003c/span\u003e\u003cspan\u003eCREATE INDEX \u003c/span\u003e\u003cspan\u003eidx_products_search_document\n\u003c/span\u003e\u003cspan\u003eON\u003c/span\u003e\u003cspan\u003e products USING GIN (search_document);\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e索引越多，寫入成本與儲存空間也會增加。不要只靠預估決定，而應以實際查詢與資料分布確認 \u003ccode\u003eEXPLAIN ANALYZE\u003c/code\u003e、慢查詢日誌、負載測試。商品數增加時，應同時查看 p95、p99 延遲、逾時率、索引新鮮度，而不只是平均回應時間。\u003c/p\u003e\n\u003ch3\u003e\n\u003ca href=\"#%E6%8E%A5%E4%B8%8A%E7%94%9F%E6%88%90%E5%BC%8F-ai-%E6%99%82%E8%A6%81%E5%A2%9E%E5%8A%A0%E7%9A%84%E5%AE%89%E5%85%A8%E8%A3%9D%E7%BD%AE\" class=\"anchor\" id=\"接上生成式-ai-時要增加的安全裝置\"\u003e\u003c/a\u003e接上生成式 AI 時要增加的安全裝置\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e商品是否存在、價格、庫存、配送日只使用目錄 API 結果\u003c/li\u003e\n\u003cli\u003e記錄模型產生的搜尋字詞擴展與原文，並限制過度擴展\u003c/li\u003e\n\u003cli\u003e精確 SKU、型號搜尋優先於語意搜尋\u003c/li\u003e\n\u003cli\u003e暫停銷售、召回篩選同樣套用於 AI 搜尋候選\u003c/li\u003e\n\u003cli\u003e追蹤回應中曝光的商品 ID 與依據欄位\u003c/li\u003e\n\u003cli\u003e模型失敗時回退到一般文字搜尋\u003c/li\u003e\n\u003cli\u003e即使商品說明或評論中有提示詞注入性句子，也要分離，避免作為系統指示執行\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\n\u003ca href=\"#%E4%B8%8A%E7%B7%9A%E5%89%8D%E9%A9%97%E6%94%B6%E6%B8%AC%E8%A9%A6\" class=\"anchor\" id=\"上線前驗收測試\"\u003e\u003c/a\u003e上線前驗收測試\u003c/h2\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003e情境\u003c/th\u003e\n\u003cth\u003e預期結果\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"情境\"\u003e昨天上架的售罄商品與持續銷售的有庫存商品同時存在\u003c/td\u003e\n\u003ctd data-label=\"預期結果\"\u003e售罄商品不會占據預設上方\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"情境\"\u003e搜尋銷售結束商品\u003c/td\u003e\n\u003ctd data-label=\"預期結果\"\u003e列表中不存在，直接 URL 顯示結束說明與不可購買狀態\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"情境\"\u003e廣告商品曝光在第 1 位版位\u003c/td\u003e\n\u003ctd data-label=\"預期結果\"\u003e可在卡片上立即識別為廣告\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"情境\"\u003e套用篩選後 0 筆\u003c/td\u003e\n\u003ctd data-label=\"預期結果\"\u003e提示移除篩選建議與原本是否存在候選\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"情境\"\u003e搜尋「러닝화」、「조깅화」\u003c/td\u003e\n\u003ctd data-label=\"預期結果\"\u003e依同義詞政策一致曝光相關商品群\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"情境\"\u003e開啟詳情後返回\u003c/td\u003e\n\u003ctd data-label=\"預期結果\"\u003e搜尋字詞、篩選、排序、列表、捲動位置復原\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"情境\"\u003e多個商品分數相同\u003c/td\u003e\n\u003ctd data-label=\"預期結果\"\u003e即使反覆切換頁面，也以固定順序維持無重複、無遺漏\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"情境\"\u003e搜尋索引中仍有庫存\u003c/td\u003e\n\u003ctd data-label=\"預期結果\"\u003e在購物車、付款階段以最新庫存阻擋\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"情境\"\u003e搜尋字詞包含電子郵件、電話號碼\u003c/td\u003e\n\u003ctd data-label=\"預期結果\"\u003e儲存日誌前遮罩或廢棄\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"情境\"\u003e大量同時搜尋\u003c/td\u003e\n\u003ctd data-label=\"預期結果\"\u003e符合已定義的 p95 延遲與錯誤率基準\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"情境\"\u003e管理員搜尋字詞儀表板\u003c/td\u003e\n\u003ctd data-label=\"預期結果\"\u003e低頻原文與敏感模式不會原樣曝光\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"情境\"\u003e變更排名權重\u003c/td\u003e\n\u003ctd data-label=\"預期結果\"\u003e記錄政策版本、核准者、套用時間、前後指標\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003ch2\u003e\n\u003ca href=\"#%E7%87%9F%E9%81%8B%E9%9A%8E%E6%AE%B5%E6%87%89%E9%87%8D%E8%A4%87%E9%80%B2%E8%A1%8C%E7%9A%84%E5%B7%A5%E4%BD%9C\" class=\"anchor\" id=\"營運階段應重複進行的工作\"\u003e\u003c/a\u003e營運階段應重複進行的工作\u003c/h2\u003e\n\u003cp\u003e搜尋不是開發一次就結束的功能。商品組成、季節、促銷、顧客表達都會改變，因此應將以下週期納入營運流程。\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e每週檢討無結果搜尋字詞與暴增搜尋字詞。\u003c/li\u003e\n\u003cli\u003e透過核准程序更新同義詞與類別對應。\u003c/li\u003e\n\u003cli\u003e一併查看售罄曝光率、點擊率、轉換率、搜尋字詞修改率。\u003c/li\u003e\n\u003cli\u003e權重變更應在離線評估與受限 A/B 測試後再擴大。\u003c/li\u003e\n\u003cli\u003e分別稽核廣告、自家商品、自然結果的曝光比重。\u003c/li\u003e\n\u003cli\u003e定期檢查搜尋日誌的保存期間、存取權限、遮罩失敗。\u003c/li\u003e\n\u003cli\u003e以實際流量重新檢討索引使用率與慢查詢。\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2\u003e\n\u003ca href=\"#%E7%B5%90%E8%AB%96\" class=\"anchor\" id=\"結論\"\u003e\u003c/a\u003e結論\u003c/h2\u003e\n\u003cp\u003eAI 可以快速製作搜尋 API 與畫面，但無法決定哪些商品有資格站到顧客面前。實戰型購物商城搜尋，必須先將\u003cstrong\u003e排序預設值、商品狀態、列表探索、搜尋範圍與無結果處理、搜尋日誌\u003c/strong\u003e確定為政策，並在資料模型、API、索引、測試、管理員指標中一致反映該政策時，才算完成。\u003c/p\u003e\n\u003cp\u003e即使程式撰寫可以自動化，陳列原則與責任也不會自動產生。最好的 AI 提示詞不是冗長困難的開發術語，而是清楚區分營運者已決定的政策與尚未決定問題的文件。\u003c/p\u003e\n","tags":["AI 開發","網店搜尋","搜尋政策","電商營運","搜尋UX"],"faqs":[{"question":"為什麼將購物商城搜尋的預設排序設為依最新登錄排序會有問題？","answer":"依最新登錄排序只反映登錄時間，因此缺貨、尚未審核、銷售性較低的商品可能佔據上方。先確保搜尋詞相關度與可銷售狀態，再組合轉換率、銷售速度、評分可信度等信號會比較安全。"},{"question":"推薦排序的權重可以讓 AI 自動決定嗎？","answer":"AI 可以提出候選公式並製作模擬程式碼，但目標與允許範圍必須由營運者決定。權重應使用歷史資料進行離線評估，並經過有限制的 A/B 測試與中止條件後再變更。"},{"question":"缺貨商品應該從搜尋結果中完全隱藏嗎？","answer":"如果有補貨可能性，且顧客可以使用補貨通知，比起完全刪除，顯示缺貨標籤並排在後段會更有用。長期缺貨或停止供應的商品應依另行標準隱藏，而是否可購買則必須在購物車與結帳階段再次驗證。"},{"question":"銷售結束商品的詳細頁面用 404 移除才是正確的嗎？","answer":"不一定總是如此。如果既有連結、訂單紀錄、安全公告、替代商品介紹具有價值，可以保留詳細頁面，同時明確標示銷售結束與不可購買狀態。如果完全沒有內容價值且適合永久移除，則可檢討 404 或 410 政策。"},{"question":"分頁與無限捲動之中，哪種方式對購物商城更好？","answer":"對於比較與回訪很重要的搜尋結果，數字分頁或載入更多的方式通常較容易管理。若要使用無限捲動，必須完善 URL 狀態、返回、捲動位置、無障礙性、錯誤復原，且更適合探索型動態消息。"},{"question":"導入 AI 搜尋或向量搜尋後，就不需要既有的文字搜尋了嗎？","answer":"需要。像 SKU、型號、品牌、規格這類精確匹配很重要的購物搜尋，必須以文字搜尋為基礎。語意搜尋應作為擴大不同表述候選項的輔助層使用，並且必須連接到實際商品 ID 與庫存資料。"},{"question":"只儲存搜尋詞和搜尋次數，就不會有個人資料問題嗎？","answer":"不能視為自動安全。搜尋詞中可能包含電子郵件、電話號碼、訂單號碼或敏感內容，若與其他識別資訊結合，可能追蹤到個人。需要目的最小化、遮蔽、存取控管，以及將原文與彙整資料分開保存。"},{"question":"可以把廣告商品放在推薦排序的上方嗎？","answer":"比起廣告曝光本身，更重要的是設計成不會被誤認為一般的自然推薦。必須分離廣告候選與自然候選，在商品卡片上提供可立即識別的標示，並且分別管理廣告曝光規則與成效指標。"},{"question":"商品搜尋需要哪些資料庫索引？","answer":"正確答案會依實際查詢與資料分布而不同。狀態篩選與排序可檢討 B-tree 系列，全文搜尋可檢討 GIN 等倒排索引，相似字串搜尋可檢討 trigram 系列，並且必須透過執行計畫與負載測試確認效果。"},{"question":"搜尋品質應該用哪些指標評估？","answer":"應同時觀察無結果比例、搜尋結果點擊率、搜尋後加入購物車率與購買轉換率、搜尋詞修改率、缺貨曝光率。再結合 p95 延遲、逾時率、索引新鮮度，才能同時評估品質與效能。"},{"question":"搜尋日誌應該保存多久？","answer":"沒有適用於所有服務的單一期限。原文搜尋詞只應保留分析所需的最短期間，而長期趨勢最好以降低個人資料風險的彙整資料保存。保存目的、刪除週期、存取權限必須與個人資料處理方針及內部政策一致。"},{"question":"讓 AI 在實作前先提問，最重要的句子是什麼？","answer":"可以指示：「在開始實作之前，如果有我尚未決定且會影響結果的政策決定，請先提問；你自行設定的假設請另列清單標示。」之後必須將回答反映到政策文件、API 契約、測試條件中，才會有效果。"}],"sources":[{"url":"https://www.ftc.go.kr/www/selectBbsNttView.do?bordCd=3\u0026key=12\u0026nttSn=43448\u0026pageIndex=1\u0026pageUnit=10\u0026rltnNttSn=46624\u0026searchCnd=all\u0026searchViolt=0604","title":"公平交易委員會：對酷澎及CPLB以欺瞞方式招攬顧客行為的制裁","type":"source"},{"url":"https://www.lawtimes.co.kr/news/articleView.html?idxno=218796","title":"法律新聞：酷澎－公平交易委員會訴訟，Naver Shopping事件成為爭點","type":"source"},{"url":"https://www.law.go.kr/LSW/lsInfoP.do?lsId=002011","title":"國家法令資訊中心：關於標示、廣告公平化之法律","type":"source"},{"url":"https://case.ftc.go.kr/ocp/co/openDocView.do?docCnvrMnNo=12808\u0026docId=20221229104156671154\u0026docTy=LTFR\u0026id=OCPLTFR20140759018192","title":"公平交易委員會線上案件處理：關於關鍵字廣告標示的議決2014-103","type":"source"},{"url":"https://www.ftc.go.kr/www/selectBbsNttView.do?bordCd=3\u0026key=12\u0026nttSn=46006\u0026pageIndex=2\u0026pageUnit=10\u0026rltnNttSn=37048\u0026searchCnd=all\u0026searchCtgry=01%2C02\u0026searchKrwd=%EA%B4%91%EA%B3%A0\u0026searchViolt=0609","title":"公平交易委員會：對高價知名商品銷售平台違反標示廣告法及電子商務法行為的制裁","type":"source"},{"url":"https://www.law.go.kr/LSW/lsInfoP.do?ancYnChk=0\u0026lsId=011357","title":"國家法令資訊中心：個人資料保護法","type":"source"},{"url":"https://baymard.com/learn/ecommerce-ux-best-practices","title":"Baymard Institute：資料驅動的電子商務UX最佳實務","type":"source"},{"url":"https://developers.google.com/search/docs/specialty/ecommerce/pagination-and-incremental-page-loading","title":"Google Search Central：分頁與增量式頁面載入","type":"source"},{"url":"https://www.postgresql.org/docs/current/textsearch.html","title":"PostgreSQL Documentation：全文搜尋","type":"source"},{"url":"https://www.postgresql.org/docs/current/textsearch-indexes.html","title":"PostgreSQL Documentation：文字搜尋的偏好索引類型","type":"source"},{"url":"https://www.postgresql.org/docs/current/pgtrgm.html","title":"PostgreSQL Documentation：pg_trgm","type":"source"}],"images":[{"id":240,"url":"https://injoys.com/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MjM1NSwicHVyIjoiYmxvYl9pZCJ9fQ==--6c0b755d9bc5bce8a57d0306acd05a2302fe176e/ChatGPT%20Image%202026%E1%84%82%E1%85%A7%E1%86%AB%207%E1%84%8B%E1%85%AF%E1%86%AF%2021%E1%84%8B%E1%85%B5%E1%86%AF%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%2002_29_49.webp","is_representative":true,"generation_method":"upload","mime_type":"image/webp","original_filename":"ChatGPT Image 2026년 7월 21일 오전 02_29_49.png","translations":{"ko":{"alt":"AI 네트워크와 상품 검색 화면, 정책 체크카드, 분석 대시보드가 결합된 쇼핑몰 검색 설계 일러스트","caption":"AI 쇼핑몰 검색을 구현하기 전에 정렬, 상품 상태, 탐색, 검색 범위, 데이터 정책을 설계하는 과정을 보여준다.","description":null},"en":{"alt":"AI network, product search interface, policy checklist cards, and analytics dashboard for e-commerce search planning","caption":"The illustration shows the planning of ranking, product status, navigation, search scope, and data policies before building AI-powered e-commerce search.","description":null},"ja":{"alt":"AIネットワーク、商品検索画面、ポリシーカード、分析ダッシュボードを組み合わせたEC検索設計","caption":"AI搭載のEC検索を構築する前に、並び順、商品状態、ナビゲーション、検索範囲、データ方針を設計する様子を示している。","description":null},"es":{"alt":"Red de IA, interfaz de búsqueda de productos, tarjetas de políticas y panel analítico para comercio electrónico","caption":"La ilustración muestra cómo definir el orden, el estado de los productos, la navegación, el alcance de búsqueda y la política de datos antes de crear un buscador con IA.","description":null},"id":{"alt":"Jaringan AI, antarmuka pencarian produk, kartu kebijakan, dan dasbor analitik untuk perencanaan pencarian toko online","caption":"Ilustrasi ini menunjukkan perencanaan peringkat, status produk, navigasi, cakupan pencarian, dan kebijakan data sebelum membangun pencarian e-commerce berbasis AI.","description":null},"pt":{"alt":"Rede de IA, interface de busca de produtos, cartões de políticas e painel analítico para comércio eletrônico","caption":"A ilustração mostra o planejamento de ordenação, status dos produtos, navegação, escopo da busca e política de dados antes de criar uma busca de e-commerce com IA.","description":null},"zh-hant":{"alt":"結合AI網路、商品搜尋介面、政策檢查卡與分析儀表板的電商搜尋規劃圖","caption":"此圖呈現在建立AI電商搜尋前，規劃排序、商品狀態、瀏覽方式、搜尋範圍與資料政策的過程。","description":null}}},{"id":241,"url":"https://injoys.com/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MjM2MiwicHVyIjoiYmxvYl9pZCJ9fQ==--7aa0dfb3a548f3bdfe5cf4f73b74b387fe8da178/ChatGPT%20Image%202026%E1%84%82%E1%85%A7%E1%86%AB%207%E1%84%8B%E1%85%AF%E1%86%AF%2021%E1%84%8B%E1%85%B5%E1%86%AF%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%2002_32_48.webp","is_representative":false,"generation_method":"upload","mime_type":"image/webp","original_filename":"ChatGPT Image 2026년 7월 21일 오전 02_32_48.png","translations":{"ko":{"alt":"상품 의미 연결망, 대체 추천 화면, 보안 데이터 저장소로 구성된 AI 쇼핑 검색 설계도","caption":"상품 속성과 동의어를 연결하고 검색 결과가 없을 때 대안을 추천하며 로그를 안전하게 집계하는 구조를 보여준다.","description":null},"en":{"alt":"AI shopping search map with semantic product links, fallback recommendations, and secure data storage","caption":"The illustration shows product attributes and synonyms being connected, alternative items suggested for empty results, and search logs aggregated securely.","description":null},"ja":{"alt":"商品意味ネットワーク、代替推薦画面、安全なデータ保存で構成されたAIショッピング検索設計","caption":"商品属性や同義語を結び、検索結果がない場合に代替商品を提案し、検索ログを安全に集計する仕組みを示している。","description":null},"es":{"alt":"Mapa de búsqueda comercial con vínculos semánticos, recomendaciones alternativas y almacenamiento seguro de datos","caption":"La ilustración muestra cómo conectar atributos y sinónimos, recomendar productos cuando no hay resultados y agregar registros de búsqueda de forma segura.","description":null},"id":{"alt":"Peta pencarian belanja AI dengan relasi produk, rekomendasi alternatif, dan penyimpanan data aman","caption":"Ilustrasi ini menunjukkan hubungan atribut dan sinonim produk, rekomendasi saat hasil kosong, serta pengelompokan log pencarian secara aman.","description":null},"pt":{"alt":"Mapa de busca comercial com conexões semânticas, recomendações alternativas e armazenamento seguro de dados","caption":"A ilustração mostra atributos e sinônimos conectados, sugestões para buscas sem resultado e agregação segura dos registros de pesquisa.","description":null},"zh-hant":{"alt":"結合商品語意關聯、替代推薦與安全資料儲存的AI購物搜尋架構","caption":"此圖呈現商品屬性與同義詞連結、無結果時提供替代推薦，以及安全彙整搜尋紀錄的流程。","description":null}}}],"published_at":"2026-07-21T10:05:48+09:00","updated_at":"2026-07-21T10:05:55+09:00","license":"cc_by","translation_status":"machine","available_locales":["ko","en","ja","es"],"data_locales":["ko","en","ja","es","id","pt","zh-hant"],"url":"https://injoys.com/en/articles/five-policies-before-ai-ecommerce-search-development"}