首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Joyo 搜尋框中文自動完成的實作原理分析

     編輯:Java 相關知識

現象觀察

在 Joyo 網站搜尋書籍時發現自動完成功能:輸入 de 出現「德語」、「德川家康」等項目;輸入 deyu 則顯示以「德語」開頭的結果;但輸入 de yu(含空格)則無結果。

輸入 de 效果 輸入 deyu 效果 輸入 de yu 無結果

推論結論

  1. 拼音按漢語順序匹配,中間不可有空格(除非資料本身含空格,如「德 語」對應「de yu」)
  2. 字母區分大小寫

實作方案

資料庫設計

假設資料表 item_t(涵蓋書籍、CD 等商品):

  • id:商品 ID
  • price:價格
  • name:商品名稱(中文或英文)
  • name_alias:關鍵欄位,儲存對應拼音。中文存拼音,英文存英文

查詢邏輯

使用 AJAX 技術,同時查詢 name 與 name_alias 兩欄位:

SELECT id, name FROM item_t 
WHERE name LIKE '%keyword%' OR name_alias LIKE '%keyword%'

註:實際輸出可能需進一步處理以匹配顯示格式。推測 Joyo 可能額外儲存用戶輸入關鍵字以優化查詢,但核心仍離不開拼音欄位比對。

擴充思考:Google 中國如何處理?

Google 不太可能用傳統關聯式資料庫(SQL Server/Oracle)儲存此類資料,因不利查詢效能。name_alias 需人工輸入拼音成本過高,唯一可行的是自動處理:將每個漢字拼音提取(類似輸入法原理),建立索引支援前綴匹配。

補充

不詳述 AJAX 使用細節與中文輸出編碼處理,屬基礎知識範疇。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved