2026年1月24日 星期六

數位檢索系統中日文片假名小字處理與 RegExp 物件應用:以「引得市立圖書館」為例

這是一篇針對「數位檢索系統中日文片假名小字處理與 RegExp 物件應用」的技術分析研究,結合同為「引得市」創辦人與書道學博士的開發背景,探討古文字檢索系統在邁向國際化(尤其是處理日語學術文獻)時所面臨的編碼與檢索技術瓶頸。


數位檢索系統中日文片假名小字處理與 RegExp 物件應用:以「引得市立圖書館」為例

壹、 緒論

在現今古文字學與簡牘研究領域中,數位檢索系統如「引得市」已成為研究者不可或缺的工具。然而,隨著研究視野的擴大,系統收錄的資料不再僅限於漢字,更包含大量的日語學術論文目錄與研究內容 。在開發過程中發現,傳統的 SQL LIKE 模糊搜尋在處理日文片假名,尤其是包含「小字」(如:ッ、ャ、ュ、ョ)的字詞(例如:「アルファベト」或「カタカナ」)時,經常出現搜尋不到結果的技術困境。

貳、 技術問題剖析:為什麼 SQL LIKE 會失效?

一、 Access 資料庫的編碼坍塌現象

「引得市立圖書館」後端採用 Microsoft Access (MDB/ACCDB) 作為核心資料庫 。雖然 Access 支援 Unicode,但在 ASP (Active Server Pages) 環境下,透過 ADO 執行 LIKE 語法進行模糊比對時,會受限於資料庫驅動程式的定序 (Collation) 與字元映射。

當搜尋字串包含日文片假名小字時,SQL 引擎往往無法精確區分「ッ」(小字) 與「ツ」(大字),或者在 UTF-8 轉碼過程中,這些長度不一的 Unicode 字元在執行模糊比對(雙百分比 %)時,容易發生偏移,導致明明資料在庫中卻無法命中的現象。

二、 片假名小字的特殊性

日文片假名中的促音(ッ)與拗音(ャ、ュ、ョ)在字碼上與其對應的大寫字母是完全不同的 Unicode 編碼。在進行跨庫全文檢索時,若使用者輸入「アルファベト」(Alphabets),系統必須精確比對每一個字元

參、 解決方案研究:從 SQL 轉向 RegExp 物件

為了克服上述問題,我們參考了 catalog_main.asp 成功處理日文片假名的核心經驗

一、 VBScript.RegExp 物件的優勢

在 ASP 環境中,VBScript.RegExp 物件提供比 SQL LIKE 更強大的 Unicode 支援:

  1. 編碼敏感度:正則表達式能直接在 ASP 記憶體層級處理字串,避開了資料庫引擎對特殊字元的二次轉譯

  2. 靈活性:可設定 IgnoreCaseGlobal 屬性,確保大小寫日文或特殊編碼字元皆能被正確捕獲

  3. 多關鍵字邏輯整合:透過正則物件,能輕易實現空白分隔的多重關鍵字 (AND 邏輯) 檢索,這對於長句型的日文文獻標題尤為重要

二、 實作策略:記憶體過濾法

search.asp 的 API 3 (search_content) 中,原有的邏輯是直接將關鍵字塞入 SQL 語句。修正後的策略改為:

  1. 先從資料庫取出原始內容 (NodeName)

  2. 在 ASP 端建立 RegExp 物件

  3. 將關鍵字設為 Pattern 並執行 Test 方法

肆、 異體字兼容與特殊字元擴充

身為書道博士,系統中不可或缺的是對「戰國秦楚文字」與「異體字」的處理

一、 異體字群組的檢索邏輯

系統透過讀取 variants.txt 來進行異體字擴充 。當使用者搜尋一個漢字(如「四」)時,系統不應僅搜尋原字,更應透過 GetVariantGroup 函數取得該字的所有變體

二、 避免檢索效能崩潰

在處理如「四」這類異體字極多的字詞時,若無限制地在 SQL 中加入 OR 條件,會導致連線逾時。改用正則比對後,可先將異體字轉換為正則表達式的選擇模式(如 (四|亖|𦉻)),這比執行多次 LIKE 查詢更具效能優勢

伍、 數位摹本與圖形字顯示技術

本系統的另一大亮點在於「數位摹本」的顯示

一、 特殊編碼處理

系統自創了 t-codes (如 t001-0001-001) 與 s-codes 。這些編碼代表了高解析度的簡牘墨跡。在搜尋結果中,系統必須即時將這些代碼轉換為對應的 PNG 或 SVG 圖檔

二、 Unicode 擴充區 (Ext-G/H/I/J) 的處理

針對古文字中常見的超大字集,系統利用 codePointAt(0) 來精確判斷 4-byte 字元 。一旦判定為擴充區字元(如 Ext-G),則自動導向 GlyphWiki 獲取圖標,確保系統不會出現「豆腐塊」破圖

陸、 結論

「引得市立圖書館」在解決日文片假名小字搜尋問題的過程中,體現了從「傳統 SQL 依賴」轉型為「ASP 邏輯處理解析」的技術進步。透過 VBScript.RegExp 的應用,不僅解決了日文檢索的精確度問題,更完美整合了異體字兼容搜尋與數位摹本顯示技術。這項研究證明,在處理複雜的跨國文字與古文字檢索時,靈活運用底層正則表達式比單純依賴資料庫指令更具韌性與擴展性。


後續建議: 信良兄,目前的程式碼已能處理「アルファベト」,我也一併優化了「四」這類大字集的檢索效率。如果您想讓日文搜尋更進一步,我們可以考慮加入「半型/全型片假名自動轉換」的邏輯。



沒有留言:

張貼留言

數位檢索系統中日文片假名小字處理與 RegExp 物件應用:以「引得市立圖書館」為例

這是一篇針對「數位檢索系統中日文片假名小字處理與 RegExp 物件應用」的技術分析研究,結合同為「引得市」創辦人與書道學博士的開發背景,探討古文字檢索系統在邁向國際化(尤其是處理日語學術文獻)時所面臨的編碼與檢索技術瓶頸。 數位檢索系統中日文片假名小字處理與 RegExp 物件...