使用Oracle Text進行全文檢索

2021-08-30 08:02:01 字數 1904 閱讀 2592

由於系統中資料不斷增多,使得原用的like語法來進行查詢法律全文變得十分緩慢,因此在原有系統中增加了全文檢索的功能。

全文檢索功能依賴於oracle text。首先保證oracle text元件在資料庫中已安裝。然後建立索引

--法律全文內容字段增加索引

create index idx_flqw_nr on flqw(nr) indextype is ctxsys.context;

--法律條款字段增加索引

create index idx_fltk_nr on fltk(nr) indextype is ctxsys.context;

由於oracle text使用的ctxsys.context型別索引不會自動維護,因些需要定時進行更新索引並進行索引優化,索引優化的次數要稍微少些。

--更新索引

exec ctx_ddl.sync_index('idx_flqw_nr');

exec ctx_ddl.sync_index('idx_fltk_nr');

--優化索引

exec ctx_ddl.optimize_index('idx_flqw_nr','full');

exec ctx_ddl.optimize_index('idx_fltk_nr','full');

也可以將更新索引及優化寫成job,這樣可以定時執行,該job要與使用者建立在同乙個目錄下。

先建立相對應的儲存過程。

--給flyy使用者賦予在儲存過程中執行全文索引的許可權

grant execute any procedure to flyy;

--更新索引的儲存過程

create or replace procedure flyy.sync_index

asbegin

ctxsys.ctx_ddl.sync_index ('idx_flqw_nr');

ctxsys.ctx_ddl.sync_index ('idx_fltk_nr');

end;

--優化索引的儲存過程

create or replace procedure flyy.optimize_index

asbegin

ctx_ddl.optimize_index ('idx_flqw_nr', 'full');

ctx_ddl.optimize_index ('idx_fltk_nr', 'full');

end;

建立定時job。

--更新索引,每15分鐘一次

variable job1 number;

begin

dbms_job.submit (:job1, 'sync_index;', sysdate, 'sysdate+1/24/4');

end;

--優化索引,一天執行一次

--經測試,優化索引可能導致死鎖,優化索引最好手工執行,慎用!

variable job1 number;

begin

dbms_job.submit (:job1, 'optimize_index;', sysdate, 'sysdate+1');

end;

執行以上job,並查詢job對應job號。

--查詢對應的job

select job, schema_user, interval, what from user_jobs;

根據查詢出來的結果啟動job。

--啟動job

exec dbms_job.run(41); --41是上面查詢出來的job號

ok,搞定!

使用LinkDevelop進行全棧開發的準備

物聯網全棧教程 從雲端到裝置 五 一 二乙個完整的物聯網專案開發流程,一定是從雲端開始第一步工作的。團隊的成員需要坐在一起討論整個專案需要怎麼配合,雲端如何實現,裝置端如何實現,如何傳遞資料等。隔行如隔山,前端後台 硬體最低兩個工種,思維模式是有差異的,如果沒有乙個統一的標準,能夠坐下來好好談嗎?如...

Berkeley DB使用全解

在開發桌面級應用程式時,常常需要用到可持續儲存技術,做為儲存程式在退出之前所使用的資料,如變數,物件,視窗位置,大小.一般我們會使用office access這類桌面型檔案資料庫,或者是使用登錄檔.但是它們都有一些不盡人意的缺陷.比如 1.mdb檔案無法在沒有安裝office的系統上訪問,直少得需要...

全使用Linux之路

作為乙個開發人員,不會用linux實在說不過去,最近有點空,打算開始來折騰一下linux,目標是實現完全依賴linux系統,作為過渡,先在window系統下安裝linux,目前市面上linux名目眾多,作為初學者其實都大同小異,就選擇了目前最流行 支援最好的ubuntu系統 雙系統安裝參考部落格wi...