oracle全文檢索的配置


   在手動創建了數據庫后,只是具備了基本的功能,有的還需要使用全文檢索功能,因此還需要配置全文檢索。

   按照以下步驟來做:

    1.檢查數據庫是否具有全文檢索功能(這是針對已經建成使用的數據庫)

        查看用戶中是否存在ctxsys用戶,查詢角色里是否存在ctxapp角色。以上兩個中的1個不滿足(不存在),則說明沒有裝過全文檢索功能。

      使用contains函數的時候,若沒有全文檢索則會報錯的。

    2.若沒有,則需要手動建立,先建立全文檢索要使用的空間

             sqlplus / as sysdba  --進入控制台

            create tablespace Idx_ctxsys datafile '/oradata/sg186fx/ctxsys01.dbf size 10240M autoextend on next 32M maxsize 20480M;--創建全文檢索使用的表空間

    3.創建全文檢索使用的用戶和角色及相應的包,則需要執行oracle自帶的一個腳本:cd $ORACLE_HOME/ctx/admin/catctx.sql

         還是在sqlplus中執行:

                @?/ctx/admin/catctx.sql ctxsys Idx_ctxsys temp nolock

在執行這個腳本的時候,輸入了幾個參數,第一個參數ctxsys為ctxsys用戶的密碼

                                                     第二個參數Idx_ctxsys為ctxsys用戶要使用的表空間

                                                      第三個參數temp為ctxsys用戶使用的臨時表空間

                                                    第四個參數nolock為ctxsys用戶處於解鎖狀態。

   4.創建完成后,要登錄ctxsys用戶

             connect ctxsys/ctxsys

    執行以下腳本:@?/ctx/admin/defaults/drdefus.sql(這是個很重要的腳本,后面創建索引會使用該腳本創建的信息)

 5.創建全文索引語法分析器

               先要明確使用全文索引的用戶,我要使用全文索引的是sgpm用戶

       因此,grant execute on ctxsys.ctx_ddl to sgpm with grant option;

      connect sgpm/sgpm

      設置語法分析器:exec ctx_ddl.drop_preference('chinalexer');

                             exec ctx_ddl.create_preference('chinalexer','chinese_lexer');

       設置詞法屬性:exec ctx_ddl.drop_preference('idx_c_store');

                           begin

                                 ctx_ddl.create_preference('idx_c_store','BASIC_STORAGE');

                                  ctx_ddl.set_attribut('idx_c_store','I_TABLE_CLAUSE','tablespaces  Idx_ctxsy');

                                  ctx_ddl.set_attribute('idx_c_store','I_INDEX_CLAUSE','tablespace  Idx_ctxsy compress 2');

                          end;

                         /

     6.創建索引

           create index sgpm.idx_c_cons_name on sgpm.c_cons(cons_name) indextype is ctxsys.context parameters('lexer chinalexer storage idx_c_store');

     7.同步索引

         variable jobno number;

         begin

             dbms_job.submit(:jobno,'pkg_sp_tools.p_cont_sys_index();',sysdate,'trunc(sysdate)+19/24+1');  --執行的是個性化方法。

         end;

        /

   普通的就是用: exec ctx_ddl.sync_index('idx_c_cons_name');

 到此,全文檢索創建成功,contains函數就可以正常使用了。

注意:創建的過程中會出現ORA-29879:cannot create multiple domain index on a column listusing same indextype ,這說明在其他用戶下已經建立了該索引。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM