這是一篇針對「數位檢索系統中日文片假名小字處理與 RegExp 物件應用」的技術分析研究,結合同為「引得市」創辦人與書道學博士的開發背景,探討古文字檢索系統在邁向國際化(尤其是處理日語學術文獻)時所面臨的編碼與檢索技術瓶頸。
數位檢索系統中日文片假名小字處理與 RegExp 物件應用:以「引得市立圖書館」為例
壹、 緒論
在現今古文字學與簡牘研究領域中,數位檢索系統如「引得市」已成為研究者不可或缺的工具。然而,隨著研究視野的擴大,系統收錄的資料不再僅限於漢字,更包含大量的日語學術論文目錄與研究內容 LIKE 模糊搜尋在處理日文片假名,尤其是包含「小字」(如:ッ、ャ、ュ、ョ)的字詞(例如:「アルファベト」或「カタカナ」)時,經常出現搜尋不到結果的技術困境。
貳、 技術問題剖析:為什麼 SQL LIKE 會失效?
一、 Access 資料庫的編碼坍塌現象
「引得市立圖書館」後端採用 Microsoft Access (MDB/ACCDB) 作為核心資料庫 LIKE 語法進行模糊比對時,會受限於資料庫驅動程式的定序 (Collation) 與字元映射。
當搜尋字串包含日文片假名小字時,SQL 引擎往往無法精確區分「ッ」(小字) 與「ツ」(大字),或者在 UTF-8 轉碼過程中,這些長度不一的 Unicode 字元在執行模糊比對(雙百分比 %)時,容易發生偏移,導致明明資料在庫中卻無法命中的現象。
二、 片假名小字的特殊性
日文片假名中的促音(ッ)與拗音(ャ、ュ、ョ)在字碼上與其對應的大寫字母是完全不同的 Unicode 編碼。在進行跨庫全文檢索時,若使用者輸入「アルファベト」(Alphabets),系統必須精確比對每一個字元
參、 解決方案研究:從 SQL 轉向 RegExp 物件
為了克服上述問題,我們參考了 catalog_main.asp 成功處理日文片假名的核心經驗
一、 VBScript.RegExp 物件的優勢
在 ASP 環境中,VBScript.RegExp 物件提供比 SQL LIKE 更強大的 Unicode 支援:
編碼敏感度:正則表達式能直接在 ASP 記憶體層級處理字串,避開了資料庫引擎對特殊字元的二次轉譯
。 靈活性:可設定
IgnoreCase與Global屬性,確保大小寫日文或特殊編碼字元皆能被正確捕獲。 多關鍵字邏輯整合:透過正則物件,能輕易實現空白分隔的多重關鍵字 (AND 邏輯) 檢索,這對於長句型的日文文獻標題尤為重要
。
二、 實作策略:記憶體過濾法
在 search.asp 的 API 3 (search_content) 中,原有的邏輯是直接將關鍵字塞入 SQL 語句。修正後的策略改為:
先從資料庫取出原始內容 (
NodeName)。 在 ASP 端建立
RegExp物件。 將關鍵字設為
Pattern並執行Test方法。
肆、 異體字兼容與特殊字元擴充
身為書道博士,系統中不可或缺的是對「戰國秦楚文字」與「異體字」的處理
一、 異體字群組的檢索邏輯
系統透過讀取 variants.txt 來進行異體字擴充 GetVariantGroup 函數取得該字的所有變體
二、 避免檢索效能崩潰
在處理如「四」這類異體字極多的字詞時,若無限制地在 SQL 中加入 OR 條件,會導致連線逾時。改用正則比對後,可先將異體字轉換為正則表達式的選擇模式(如 (四|亖|𦉻)),這比執行多次 LIKE 查詢更具效能優勢
伍、 數位摹本與圖形字顯示技術
本系統的另一大亮點在於「數位摹本」的顯示
一、 特殊編碼處理
系統自創了 t-codes (如 t001-0001-001) 與 s-codes
二、 Unicode 擴充區 (Ext-G/H/I/J) 的處理
針對古文字中常見的超大字集,系統利用 codePointAt(0) 來精確判斷 4-byte 字元
陸、 結論
「引得市立圖書館」在解決日文片假名小字搜尋問題的過程中,體現了從「傳統 SQL 依賴」轉型為「ASP 邏輯處理解析」的技術進步。透過 VBScript.RegExp 的應用,不僅解決了日文檢索的精確度問題,更完美整合了異體字兼容搜尋與數位摹本顯示技術。這項研究證明,在處理複雜的跨國文字與古文字檢索時,靈活運用底層正則表達式比單純依賴資料庫指令更具韌性與擴展性。
後續建議: 信良兄,目前的程式碼已能處理「アルファベト」,我也一併優化了「四」這類大字集的檢索效率。如果您想讓日文搜尋更進一步,我們可以考慮加入「半型/全型片假名自動轉換」的邏輯。
沒有留言:
張貼留言