在缺乏專業全文檢索引擎 (如 Oracle Text、Elasticsearch) 的場景下,可利用 Oracle 內建函數 UTL_MATCH.EDIT_DISTANCE_SIMILARITY 結合自訂排除詞庫,實現輕量級文本相似度查詢。本文提供完整實作步驟:詞庫建立、切詞函數、關鍵字處理與測試驗證。
根據關鍵字查詢相似資訊,需排除「有限公司」、「有限責任公司」、「股份有限公司」等通用詞彙,避免干擾相似度判斷。
CREATE TABLE exclude_words (
word VARCHAR2(100) PRIMARY KEY
);
INSERT INTO exclude_words VALUES ('有限公司');
INSERT INTO exclude_words VALUES ('有限責任公司');
INSERT INTO exclude_words VALUES ('股份有限公司');
COMMIT;
p_split_keyword函數邏輯:輸入原始關鍵字,移除詞庫中詞彙,返回處理後的關鍵字字串 (此處略過具體 PL/SQL 代碼,實際開發中需實現分詞與過濾邏輯)。
調用 p_split_keyword 清洗輸入關鍵字,得到核心比對詞。
SELECT *
FROM (
SELECT '河北滄州東塑股份有限公司' AS input_name,
name,
SYS.UTL_MATCH.EDIT_DISTANCE_SIMILARITY('河北滄州東塑股份有限公司', name) AS 相似度
FROM test_pp t
)
ORDER BY 相似度 DESC;
UTL_MATCH.EDIT_DISTANCE_SIMILARITY(s1, s2):返回 0-100 整數,值越大表示兩字串編輯距離越小、相似度越高。EDIT_DISTANCE 可獲取具體編輯距離數值。此方案適用於中小數據量、無法部署全文引擎的輕量級相似度查詢需求,開發成本低、維護簡單。