搜尋引數找到太多項目時,此方法藉由結合布林 AND 關係中的初始及第二個搜尋引數, 來縮小(或修正)搜尋。
將結果儲存在表格中,並在此表格上進行下一個搜尋, 就可以不使用 REFINE 函數來修正搜尋結果。然而, 依據合格術語的數目而定, 此方法的效率比儲存最新搜尋引數並使用 REFINE 還差。
下列步驟顯示如何搜尋,與使用 REFINE 函數予以修正。REFINE 函數會傳回搜尋引數, 此引數是其輸入參數的布林 AND 結合。REFINE 所傳回的所結合搜尋引數是類型 LONG VARCHAR的值。
建立表格 PREVIOUS_SEARCHES 以保留已搜尋的搜尋引數。
db2=>CREATE TABLE PREVIOUS_SEARCHES (step INT, searchargument LONG VARCHAR)
![]() |
在範例表格中搜尋字詞 compress。
db2=>SELECT COMMENT FROM DB2TX.SAMPLE WHERE DB2TX.CONTAINS (COMMENTHANDLE, '"compress"') = 1
將搜尋引數插入到其後步驟會用到的 PREVIOUS_SEARCHES 表格中。
db2=>INSERT INTO PREVIOUS_SEARCHES VALUES (1, '"compress"')
![]() |
假設搜尋傳回太多文字文件, 則藉著使用 REFINE 函數來結合先前的搜尋術語與字詞 compiler, 可修正搜尋。
db2=>WITH LAST_STEP(STEP_MAX) AS (SELECT MAX(STEP) FROM PREVIOUS_SEARCHES), LAST_SEARCH(LAST_SEARCH) AS (SELECT SEARCHARGUMENT FROM PREVIOUS_SEARCHES,LAST_STEP WHERE STEP = STEP_MAX) SELECT COMMENT FROM DB2TX.SAMPLE, LAST_SEARCH WHERE DB2TX.CONTAINS (COMMENTHANDLE, DB2TX.REFINE(LAST_SEARCH, '"compiler"')) = 1
將修正過的搜尋引數插入到其後步驟會用到的 PREVIOUS_SEARCHES 表格中。
db2=>INSERT INTO PREVIOUS_SEARCHES WITH LAST_STEP(STEP_MAX) AS (SELECT MAX(STEP) FROM PREVIOUS_SEARCHES) SELECT STEP_MAX+1, DB2TX.REFINE(SEARCHARGUMENT, '"compiler"') FROM PREVIOUS_SEARCHES, LAST_STEP
![]() |
您可重複此步驟,直到文字文件數目縮小到可接受的數目。