DB2 通過集成 IBM Text Search (原 NetSearch Extender) 或原生 Db2 Text Search (DB2 9.7+),在 XML 列上提供強大的全文檢索能力。支持語幹提取、同義詞、模糊匹配、邻近查詢、評分排序,並與 XPath/XQuery 無縫結合,實現結構化過濾 + 全文搜索的混合查詢。
-- 1. 啟用文本搜索服務 (實例級,一次性) db2ts "START FOR TEXT" -- 2. 創建文本索引 (XML 列) CALL SYSPROC.SYSTS_CREATE( 'CREATE INDEX xml_text_idx FOR XML ON products(details) CONFIGURATION (UPDATE FREQUENCY D(*), UPDATE MINIMUM 1000) LANGUAGE zh_CN FORMAT XML');
FORMAT XML:指定索引 XML 節點文本內容,自動忽略標籤。XPATH SCOPE (可選):限制索引特定路徑,如 XPATH SCOPE '/product/description' 減小索引體積。SELECT id, name FROM products WHERE CONTAINS(details, 'laptop AND "wireless mouse"') = 1
SELECT id, name, SCORE(1) AS relevance FROM products WHERE CONTAINS(details, 'laptop', 1) = 1 ORDER BY relevance DESC
xquery
for $p in db2-fn:xmlcolumn('PRODUCTS.DETAILS')/product
where $p/description/ft:contains('laptop', 'fuzzy')
order by ft:score($p) descending
return $p
LANGUAGE zh_CN 啟用中文分詞器 (基於詞典 + 隱馬爾可夫模型)。SYSTS_ALTER 添加專業術語、人名、地名,提升召回率。SYSTS_UPDATE,避免觸發頻繁增量更新碎片化。UPDATE COMMAND CONFIGURATION USING MAXIMUM_DEGREE_OF_PARALLELISM 4 限制索引構建佔用資源。SYSTS_ADMIN('GET INDEX STATUS', ...) 監控索引大小、文檔數、更新延遲、碎片率;碎片率 >30% 觸發重組 SYSTS_ADMIN('REORG INDEX', ...)。DB2 9.1/9.5 使用 NetSearch Extender (單獨安裝),9.7+ 內建 Db2 Text Search (原 InfoSphere Text Search)。遷移需重建索引,應用層 CONTAINS/SCORE 語法兼容,XQuery ft:contains 需 9.7+。
DB2 XML 全文搜索將結構化查詢與非結構化檢索融合在單一引擎,消除外部搜索引擎同步複雜度。合理配置索引範圍、語言模型、更新策略,配合混合查詢下推,可實現亞秒級億級 XML 文檔檢索。