我的開發(fā)環(huán)境:Oracle 9i,Window Server 2003
(1)正確安裝Oracle 9i企業(yè)版,Oracle9i企業(yè)版在安裝的時候就已經(jīng)默認(rèn)提供了全文索引支持。如果你的Oracle還沒有安裝,請先安裝一下,至于怎樣安裝,這里不做討論,請Google一下。
(2)Oracle9i默認(rèn)情況下會把ctxsys用戶鎖定,請以DBA身份登陸Oracle,把用戶ctxsys解鎖,并修改其密碼為ctxsys,以便于我們后面登陸Text Manager
(3)進(jìn)入Oracle的text manager,點(diǎn)程序->Oracle-OracleHome92->Enterprise Manager Console。選獨(dú)立啟動,然后選工具欄最下面的應(yīng)用程序->text Manager,這時會要求您輸入用戶名和密碼,用戶名ctxsys,密碼ctxsys
(4)選擇首選項(xiàng)——〉語言指定器——〉CTXSYS,選一個點(diǎn)類似創(chuàng)建,輸入指示器的名字如chinese_lexer,選擇lexer下的chinese_vgrnm_lexer 。
(5)建立索引,在索引上點(diǎn)右鍵,然后選創(chuàng)建CONTEXT索引,這里要注意方案要選擇您自己的表空間,如我有個表SZPOI在表空間SUZHOU中,現(xiàn)在我要對該表的UNITNAME字段建立全文索引,那么方案選suzhou,表選szpoi,字段選unitname,首選項(xiàng)中選擇chinese_lexer 。
大功告成了嗎?沒有!
接著我們還要建立兩個job來維護(hù)和優(yōu)化索引。
維護(hù):
begin
sys.dbms_job.submit(job => :job,
what => 'ctx_ddl.sync_index(''SZPOI_UNITNAME_INDEX'');',
next_date => to_date('23-05-2008 13:54:57', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'SYSDATE + (1/24/4)');
commit;
end;
優(yōu)化:
begin
sys.dbms_job.submit(job => :job,
what => 'ctx_ddl.optimize_index(''SZPOI_UNITNAME_INDEX'',''FULL'');',
next_date => to_date('23-05-2008 14:03:02', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'SYSDATE + 1');
commit;
end;
(1)正確安裝Oracle 9i企業(yè)版,Oracle9i企業(yè)版在安裝的時候就已經(jīng)默認(rèn)提供了全文索引支持。如果你的Oracle還沒有安裝,請先安裝一下,至于怎樣安裝,這里不做討論,請Google一下。
(2)Oracle9i默認(rèn)情況下會把ctxsys用戶鎖定,請以DBA身份登陸Oracle,把用戶ctxsys解鎖,并修改其密碼為ctxsys,以便于我們后面登陸Text Manager
(3)進(jìn)入Oracle的text manager,點(diǎn)程序->Oracle-OracleHome92->Enterprise Manager Console。選獨(dú)立啟動,然后選工具欄最下面的應(yīng)用程序->text Manager,這時會要求您輸入用戶名和密碼,用戶名ctxsys,密碼ctxsys
(4)選擇首選項(xiàng)——〉語言指定器——〉CTXSYS,選一個點(diǎn)類似創(chuàng)建,輸入指示器的名字如chinese_lexer,選擇lexer下的chinese_vgrnm_lexer 。
(5)建立索引,在索引上點(diǎn)右鍵,然后選創(chuàng)建CONTEXT索引,這里要注意方案要選擇您自己的表空間,如我有個表SZPOI在表空間SUZHOU中,現(xiàn)在我要對該表的UNITNAME字段建立全文索引,那么方案選suzhou,表選szpoi,字段選unitname,首選項(xiàng)中選擇chinese_lexer 。
這樣全文檢索就建好了,并用chinese_vgram_lexer作為分析器。
(6)如何查詢數(shù)據(jù)。索引建立以后,我們就可以對該表進(jìn)行全文索引查詢了,查詢語句如下:
SELECT score(1),t.unitname,t.objectid,t.eminx,t.eminy,t.mpfullname,t.dianhua FROM szpoi t WHERE contains (unitname, '規(guī)劃局,吳中分局', 1) > 0 order by score(1) desc
大功告成了嗎?沒有!
接著我們還要建立兩個job來維護(hù)和優(yōu)化索引。
維護(hù):
begin
sys.dbms_job.submit(job => :job,
what => 'ctx_ddl.sync_index(''SZPOI_UNITNAME_INDEX'');',
next_date => to_date('23-05-2008 13:54:57', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'SYSDATE + (1/24/4)');
commit;
end;
優(yōu)化:
begin
sys.dbms_job.submit(job => :job,
what => 'ctx_ddl.optimize_index(''SZPOI_UNITNAME_INDEX'',''FULL'');',
next_date => to_date('23-05-2008 14:03:02', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'SYSDATE + 1');
commit;
end;