首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 教學

Oracle 模擬全文檢索切詞機制實現文本相似度查詢

     編輯:Oracle 教學

Oracle 模擬全文檢索切詞機制實現文本相似度查詢

在缺乏專業全文檢索引擎 (如 Oracle Text、Elasticsearch) 的場景下,可利用 Oracle 內建函數 UTL_MATCH.EDIT_DISTANCE_SIMILARITY 結合自訂排除詞庫,實現輕量級文本相似度查詢。本文提供完整實作步驟:詞庫建立、切詞函數、關鍵字處理與測試驗證。

1. 應用場景

根據關鍵字查詢相似資訊,需排除「有限公司」、「有限責任公司」、「股份有限公司」等通用詞彙,避免干擾相似度判斷。

2. 實作步驟

步驟一:建立排除詞庫表

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;
切詞函數流程圖
關鍵字處理流程示意 (圖片來源待補充)

3. 核心函數說明

  • UTL_MATCH.EDIT_DISTANCE_SIMILARITY(s1, s2):返回 0-100 整數,值越大表示兩字串編輯距離越小、相似度越高。
  • 搭配 EDIT_DISTANCE 可獲取具體編輯距離數值。

4. 進階優化方向

  • 引入 N-gram 或 Tokenize 做更精細切詞。
  • 建立關鍵字倒排索引表,加速大數據量查詢。
  • 結合業務權重 (如地名、品牌詞權重更高) 調整相似度評分。

此方案適用於中小數據量、無法部署全文引擎的輕量級相似度查詢需求,開發成本低、維護簡單。

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