Documentation
(C) IBM Corp. 1996, 2000

DB2 Text Extender


指定搜尋引數

搜尋引數是用在 CONTAINS、NO_OF_MATCHES、RANK 及 HANDLE_LIST 中。 本節使用 CONTAINS 函數來顯示搜尋引數在 DB2 Text Extender 函數中的各種不同範例。

搜尋數個術語

在搜尋引數中可有一個以上的術語。其中一種結合數個搜尋術語的方法是用逗號將它們連接在一起,如:

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

此形式的搜尋引數會找到含有任一搜尋術語的文字。在邏輯術語中, 搜尋術語是用 OR 運算子相連接。

用布林運算子 AND 及 OR 來搜尋

(請參閱用布林運算子 NOT 來搜尋。)

使用布林運算子 "&" (AND) 與 "!" (OR), 可以將多個搜尋術語結合起來。 例如:

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

使用布林運算子,可將數個術語結合在一起:

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

如果您使用一個以上的布林運算子,DB2 Text Extender 的評估原則是由左至右, 但邏輯 AND 運算子 (&) 優先於邏輯 OR 運算子 (!)。例如,如果未含括弧,

     "DB2" & "compiler" |  "support" & "compress"

評定為:

     ("DB2" & "compiler") |  ("support" & "compress")

所以在下例中,您必須放入括弧:

     "DB2" & ("compiler" |  "support") & "compress"

如果您用逗號分隔字元將布林運算子與搜尋術語串連在一起, 如:

     ("compress", "compiler") & "DB2"

則會將逗號解譯成布林 OR 運算子,如:

     ("compress" |  "compiler") & "DB2"

搜尋術語的變體

如果使用的是精確索引, 則 DB2 Text Extender 會搜尋與您所鍵入之術語完全相同的術語。 例如, 術語 media 只會找到含有 media 的文字。而找不到含有單數形 medium 的文字。

如果使用的是語言索引,則 DB2 Text Extender 會搜尋術語的變形 (如名詞的複數)或不同時態的動詞。

例如,drive 這個術語會尋找含有 "drive"、"drives"、 "driving"、"drove" 及 "driven" 的文字。

搜尋術語的組件(字元遮罩)

遮罩字元(或稱為「萬用字元」)提供方法讓搜尋更具彈性。它們代表搜尋術語前面、 中間或結尾的選用字元。且可增加搜尋所找到的文字文件數。
要訣

如果使用遮罩字元,就不能使用 SYNONYM FORM OF 關鍵字。

如果有的是精確索引,則遮罩字元對尋找術語的變體特別有用。如果有的是語言索引, 則仍會找到使用遮罩字元所找到的大部份變體。

請注意,不能將字詞片斷(用萬用字元遮罩的字詞)還原成基本形式。 所以,如果搜尋 passe%, 則會找不到 passes 或 passed 字詞, 因為在索引中它們已還原成基本形式 pass。若要找到它們,您必須搜尋 pass%

DB2 Text Extender 使用兩個遮罩字元:百分比 (%) 和底線 (_):

搜尋已含有遮罩字元的術語

如果想要搜尋含有 % 字元或 _ 字元的術語, 您必須在字元前面加上跳出字元, 然後再使用 ESCAPE 關鍵字來識別跳出字元。

例如,若要搜尋 10% interest,請執行下列步驟:

db2=>SELECT DATE, SUBJECT
       FROM DB2TX.SAMPLE
       WHERE DB2TX.CONTAINS (COMMENTHANDLE,
                             '"10!% interest" ESCAPE "!"') = 1

此範例中的跳出字元是 "!"

搜尋任意順序的術語

如果如下例所示搜尋 hard disk,則無論所使用的索引類型為何, 只有在它們是鄰近且順序相同時,才會找到這兩個術語。

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

若要搜尋任意順序的術語(如 data disks and hard drives), 請使用逗號來隔開術語:

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

搜尋相同句子或段落中的術語

此處是搜尋引數的範例,可找到搜尋術語出現在相同句子中的文字文件:

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

您也可搜尋同時出現的二個以上的字詞。在下個範例中, 會搜尋出現在相同段落中的數個字詞:

db2=>SELECT DATE, SUBJECT
       FROM DB2TX.SAMPLE
       WHERE DB2TX.CONTAINS (COMMENTHANDLE,
                             '"compress" IN SAME PARAGRAPH AS "decompress"
                                                     AND "encryption"') = 1

在結構文件區段中搜尋術語

這是個搜尋引數的範例,它可找到結構文件中 play 區段裡的 author 次區段裡文字內搜尋術語 Williams。 文件結構由文件模型檔中的模型 play 所指定。 相關資訊,請參閱使用結構化文件 (區段支援)

db2=>SELECT DATE, SUBJECT
       FROM DB2TX.SAMPLE
       WHERE DB2TX.CONTAINS (COMMENTHANDLE,
                       'MODEL play SECTIONS (play/author) "williams"') = 1

搜尋術語的同義字

透過語言索引,您可以執行更有彈性的搜尋,除了搜尋您所指定的術語之外, 更可以搜尋意義類似的文字。 例如,搜尋字詞 book 時, 同時搜尋其同義字可能是有用的。若要做這樣的處理,請指定:

db2=>SELECT DATE, SUBJECT
       FROM DB2TX.SAMPLE
       WHERE DB2TX.CONTAINS (COMMENTHANDLE, 'sYNONYM FORM OF "book"') = 1

使用 SYNONYM FORM OF 時,會假設是用邏輯 OR 運算子來連接術語的同義字, 亦即,會將搜尋引數解譯為:

"book" |  "article" |  "volume" |  "manual"

同義字是位在 DB2 Text Extender 所提供的字典中。 同義字的預設字典一律是 US_ENGLISH,而不是文字架構設定中所指定的語言。

指定不同的語言,可變更特殊查詢的字典。此處為範例:

db2=>SELECT DATE, SUBJECT
       FROM DB2TX.SAMPLE
       WHERE DB2TX.CONTAINS (COMMENTHANDLE,
                             'sYNONYM FORM OF UK_ENGLISH "programme"') = 1
要訣

如果搜尋術語中有遮罩字元,或將 NOT 與搜尋引數搭配使用, 則不能使用 SYNONYM 關鍵字。

語言搜尋

DB2 Text Extender 可對依據所指定之搜尋術語來搜尋, 以提供功能強大的語言處理。 語言函數適用於語言索引。 語言函數會在語言和精確索引的語言處理中予以說明。

此範例搜尋的是複數形式(如 utilities), 以及尋找 utility。搜尋開始前,會先用英文字典將它還原為基本形式 utility

然而,英文字典中並不含有將其它語言之術語變體還原為基本形式的資訊。若要搜尋不同語言的複數形式, 您必須使用那個語言的字典。

例如,如果您指定 GERMAN,則可搜尋 geflogen (flown), 且找到其基本形式 fliegen (fly) 的所有變體: 不只是 geflogen,還包括 fliege、fliegt,以此類推。

db2=>SELECT DATE, SUBJECT
       FROM DB2TX.SAMPLE
       WHERE DB2TX.CONTAINS (COMMENTHANDLE,
                             'sTEMMED FORM OF GERMAN "geflogen"') = 1
要訣

在非美式英語的文件中搜尋時,不管預設語言為何, 都請在搜尋引數中指定語言。

如果一律指定的是搜尋術語的基本形式,而不是它的變體, 則不需要指定語言。

若要瞭解原因,請考慮為您資料庫中的文字編製索引時會發生什麼事。 如果您使用語言索引,則術語儲存於索引之前, 所有的術語變體都會回歸到基本形式。 這表示在 DB2TX.SAMPLE 表格中,雖然術語 decompress 是出現在 COMMENT 直欄的第一個登錄中,而 decompression 是出現在第二個登錄,但此索引只能含有基本形式 "decompress",且將此術語 (或其變體) 識別為這兩個登錄中的項目。

稍後,若您搜尋基本形式 "decompress",您將會找到所有的變體。 然而,如果搜尋 decompression 之類的變體, 則無法直接找到它。您必須為此搜尋指定適當的字典, 這樣才會先將變體轉換成其基本形式。

用布林運算子 NOT 來搜尋

您可使用布林運算子 NOT,將特殊文字文件從搜尋中排除。例如:

("compress", "compiler") & NOT "DB2"

在搜尋 compress 或 compiler 時,會排除含有術語 DB2 的任何文字文件。

搜尋相同句子或段落中的術語所述之 IN SAME SENTENCE AS 或 IN SAME PARAGRAPH AS 結合時, 您不能使用 NOT 運算子,也不能將它與搜尋術語的同義字中所述的 SYNONYM FORM OF 搭配使用。

您只能將 NOT 運算子與純搜尋搭配使用,亦即, 不能任意地結合 &、| 及 NOT 運算子(請參閱搜尋引數語法)。

容許使用 NOT 的範例:

     NOT("compress" & "compiler")

容許的範例為:

     NOT("compress" , "compiler")

智慧型搜尋

「智慧型」搜尋會搜尋與搜尋術語拼法類似的字詞。 Ngram 索引有此功能。

例如:

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

此搜尋可找到一個拼錯的字詞 conpress

範例 2 中的符合層次會指定正確性層級。 支援的五個層次, 其中層次 1 的符合度最小,大約是百分之 20, 而層次 5 的符合度最高,大約是百分之 90。 文件中會有拼字錯誤時,請使用智慧型搜尋; 通常是在使用「光學字元辨識 (OCR)」裝置或注音輸入時最容易發生。

關於詞組界限

韓文中已開發「界限」搜尋。它會確定 DB2 Text Extender 會在搜尋期間注意到字詞界限。 例如:

db2=>SELECT DATE, SUBJECT
       FROM DB2TX.SAMPLE
       WHERE DB2TX.CONTAINS (COMMENTHANDLE,
                             'BOUND "korean-expression"') = 1

搜尋發音類似的字詞

「聲音」搜尋會找到發音與搜尋引數類似的字詞。 在文件中含有發音類似,但拼法不同的文件時, 這個功能十分有用。 例如,發音為 my-er 的德語名稱,有數種拼法:

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

此搜尋可找到 Meyer、Mayer 及 Maier。

詞典搜尋

詞典搜尋是 DB2 Text Extender 另一個功能強大的搜尋術語展開函數。 搜尋的附加術語是從您自行建置的詞典中取得, 所以您可直接控制它們。 例如,搜尋 database,可能會找到 repository 及 DB2 之類的術語。

此類型的搜尋主要是針對您經常搜尋的特定感興趣區域; 是為了產生更有效率的搜尋結果,而值得花時間去研究以建置詞典的區域。

請參閱詞典概念,以取得相關資訊及如何建置詞典的說明。圖 16中的範例是從詞典中取出與資料庫有關的一小部份。 用在下例中,可舉例說明使用詞典展開的語法。

此範例會取出術語 object relational database management system 並展開它, 方法是新增在詞典 myterms 中所找到的此術語的所有案例。 此處,會將 DB2 新增到搜尋中。

db2=>SELECT DATE, SUBJECT
       FROM DB2TX.SAMPLE
       WHERE DB2TX.CONTAINS (COMMENTHANDLE,
                   'THESAURUS "myterms"
                   EXPAND "INST"
                   TERM OF "object relational database management system"') = 1

此範例會取出術語 document management system 並展開它, 方法是新增它的所有同義字。它有一個同義字 library。

db2=>SELECT DATE, SUBJECT
       FROM DB2TX.SAMPLE
       WHERE DB2TX.CONTAINS (COMMENTHANDLE,
                   'THESAURUS "myterms"
                   EXPAND "SYN"
                   TERM OF "document management system"') = 1
                   

純文字及雜混搜尋

「純文字搜尋」是會將搜尋術語以純文字形式表示的搜尋方式。詞組或句子用自然語言說明要搜尋的主旨。在純文字查詢中,字詞順序並沒有關係。因此, 支援字彙關係。 在擷取中,這些是純文字查詢術語及文件集中所發生的特定字詞配對, 其含有特定的最小頻率及特定最小距離。 英文文件的距離是五個字詞。

請注意,純文字引數中的搜尋字串不支援字元或字詞遮罩。

例如:

db2=>SELECT DATE, SUBJECT
       FROM DB2TX.SAMPLE
       WHERE DB2TX.CONTAINS (COMMENTHANDLE,
             'IS ABOUT "everything related to AIX installation"') = 1

雜混搜尋是布林搜尋及純文字搜尋的結合。 例如:

db2=>SELECT DATE, SUBJECT
       FROM DB2TX.SAMPLE
       WHERE DB2TX.CONTAINS (COMMENTHANDLE,
             '"DB2" & IS ABOUT "everything related to AIX installation"') = 1


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