Documentation
(C) IBM Corp. 1996, 2000

DB2 Text Extender


搜尋文字

>>-+-CONTAINS------+--(--handle--,--search-argument--)---------><
   +-NO_OF_MATCHES-+
   '-RANK----------'
 
>>-SEARCH_RESULT------------------------------------------------>
 
>----(--schema--,--table--,--handle--,--search-argument--)-----><
 

本節說明如何使用 DB2 Text Extender 提供的 SQL 函數,在含有文字的 DB2 資料庫中搜尋。 它會告訴您如何:

SEARCH_RESULT 的使用會在改善搜尋效能中予以說明。

這些 DB2 Text Extender 函數在文字索引中搜尋出現的搜尋引數。 如果表格中有 100 000 個文字文件, CONTAINS、RANK 或 NO_OF_MATCHES 函數會被呼叫 100 000 次。 但不會搜尋文字索引 100 000 次。相反地, 第一次呼叫函數時會建立一個內部列示,列出含有搜尋術語的全部文件; 後續的函數呼叫會判斷所要的文件是否在列示中。
要訣

使用 DB2 Text Extender 函數在表格中搜尋時,請記得傳遞 handle 直欄給函數, 不要傳遞文字直欄。如果嘗試在文字直欄中搜尋, 則 SQL 會用指出「資料類型錯誤」的訊息來回應,例如:

在函數路徑中找不到含有相容引數且名稱為 CONTAINS 的函數。

如果在發出 ENABLE TEXT TABLE 或 ENABLE TEXT COLUMN 指令後立即搜尋文字, 則會發生錯誤 RC_SE_EMPTY_INDEX, 指出指令所建立的索引不存在。 建立索引所需的時間依據各個因素而定(如正在編製索引的文件數), 以及處理此索引的系統效能。 它的時間可從數分鐘到數小時不等,且應在系統負載較輕時完成(如前一晚)。

如果出現此訊息,請稍後再試著搜尋,或使用 GET INDEX STATUS 來檢查編製索引是否已發生錯誤。

查詢

此範例舉例說明 CONTAINS 函數如何在用 handle 識別的文件中搜尋文字。如果文字與搜尋引數相符, 則傳回 1,否則,傳回 0。

db2=>SELECT DATE, SUBJECT
       FROM DB2TX.SAMPLE
        WHERE DB2TX.CONTAINS (COMMENTHANDLE, '"compress"') = 1

在此例中,您搜尋的是直欄 COMMENTHANDLE 之 handle 所參照之文字中的術語 compress。 COMMENTHANDLE 直欄中的 handle 會指出為 COMMENT 文字編製索引的位置。
要訣

如果已建立表格或直欄的大小寫混合識別字, 請記住,必須用雙引號括住這些名稱。例如:

db2=>SELECT DATE, SUBJECT
        FROM "db2tx.sample"
        WHERE DB2TX.CONTAINS (COMMENTHANDLE, '"compress"') = 1

如果是從指令行中指定 DB2 UDB select 陳述式, 作業系統指令行剖析器會移除指令字串中的特殊字元(如雙引號), 所以您必須使用反斜線來遮罩這些特殊符號。例如:

    DB2 "SELECT DB2TX.file(COMMENTHANDLE)
        FROM db2tx.sample"
        WHERE DB2TX.CONTAINS (COMMENTHANDLE, '\"compress\"') = 1
        

搜尋與傳回找到的符合數目

使用 NO_OF_MATCHES 函數,可判定在每份文字文件中找到搜尋準則的頻率。

db2=>WITH TEMPTABLE(DATE, SUBJECT, MATCHES)
    AS (SELECT DATE, SUBJECT,
                    DB2TX.NO_OF_MATCHES(COMMENTHANDLE,'"compress"')
        FROM DB2TX.SAMPLE)
    SELECT *
        FROM TEMPTABLE
             WHERE MATCHES > 0

NO_OF_MATCHES 傳回整數值。

搜尋與傳回所找到之文字文件的等級

RANK 是絕對值,可指出符合搜尋準則之文件與其它找到文件的關聯程度。 此值可指出文件中相對於文件大小的相配數目。 您可使用 RANK 函數來取得找到的文件等級。

此處為範例:

db2=>WITH TEMPTABLE(DATE, SUBJECT, RANK)
    AS (SELECT DATE, SUBJECT,
               DB2TX.RANK(COMMENTHANDLE,'"compress"')
        FROM DB2TX.SAMPLE)
    SELECT *
        FROM TEMPTABLE
        WHERE RANK > 0
        ORDER BY RANK DESC

RANK 傳回的 DOUBLE 值是介於 0 及 1 之間。


[ 頁面頂端 | 前一頁 | 下一頁 | 目錄 | 索引 ]