2011-01-11

Oracle Text – (2)Getting Started with Oracle Text(Query Application)

這個章節是在解說很簡單的步驟,但是我卡在不知道如何建立CTXAPP Role,
後來老大找到這篇文章
Installing Oracle Text on Oracle 10gR2...

使用底下的catctx.sql(在oracle資料夾裡頭要找一下)
image
catctx.sql <password_for_CTXSYS> <tablespace_for_CTXSYS> <temp_tablespace_for_CTXSYS> <lock_or_nolock>

然後這篇文章中提到在建立context index 會產生一個錯誤,

ERROR atline 1:
ORA-29855: error occurred in the execution of ODCIINDEXCREATEroutine
ORA-20000: Oracle Text error:
DRG-10700: preference does notexist: CTXSYS.DEFAULT_LEXER
ORA-06512: at "CTXSYS.DRUE", line 126
ORA-06512:at "CTXSYS.TEXTINDEXMETHODS", line 54
ORA-06512: at line 1

10700,0, "preference does not exist: %(1)s"
// *Cause: the preference name specified does not exists
// *Action: retry with the correct preference name
// *Mnemonic: PF_PREF_NOTXIST
//
解決的方式是使用ctxsys這個user,去執行drdefxx.sql這個script,就可以。


-----這是分隔線,以上是建立CTXAPP Role的方式------------------------
因為範例中重要的是在建立Index上,所以我直接貼上範例所寫的SQL Statement
CREATE INDEX idx_docs ON docs(text) INDEXTYPE IS
CTXSYS.CONTEXT PARAMETERS('FILTER CTXSYS.NULL_FILTER SECTION GROUP CTXSYS.HTML_SECTION_GROUP');
所以查詢後的結果如下
SELECT SCORE(1),ID,TEXT FROM DOCS WHERE CONTAINS(TEXT,'France',1)>0;
image
補充: Contains clause
定義->
CONTAINS(
     [schema.]column,
      text_query    VARCHAR2
     [,label       NUMBER])RETURN NUMBER;
----這是分隔線,以上是查詢的結果----------------------------
若今天若新增幾筆資料,但是這些資料卻未建立Index則會發生找不到資料的問題,
也就是Index沒有同步,如下圖所示
image

所以這時候解決的方法可以使用CTX_DLL.SYNC_INDEX的方式
image

沒有留言:

張貼留言