Oracle 9i 全文檢索簡單配置方式

2021-04-02 11:57:23 字數 2550 閱讀 3904

listener =

(description_list =

(description =

(address_list =

(address = (protocol = ipc)(key = extproc0))

)(address_list =

(address = (protocol = tcp)(host = server)(port = 1521))))

)sid_list_listener =

(sid_list =

(sid_desc =

(sid_name = pl***tproc)

(oracle_home = d:/oracle/ora92)

(program = extproc)

)(sid_desc =

(global_dbname = server)

(oracle_home = d:/oracle/ora92)

(sid_name = server)))

2、設定語法分析器

在ctxsys下,預設使用的是basic_lexer,對英文支援比較好,為支援中文,做如下設定

begin ctx_ddl.create_preference('my_lexer','chinese_vgram_lexer'); end;

3、例項

在使用者search下search_catalog表的page_desc,link_tile需要進行全文檢索,如下

create index index_text on search_catalog(page_desc) indextype is ctxsys.context parameters('lexer ctxsys.my_lexer');

create index index_title on search_catalog(link_title) indextype is ctxsys.context parameters('lexer ctxsys.my_lexer');

//可以修改index 的儲存空間,最簡單的方法是建立在其他使用者的預設儲存空間上

grant create any index to "search";

grant alter any index to "search";

create index shiyq_index.index_text on search_catalog(page_desc) indextype is ctxsys.context parameters('lexer ctxsys.my_lexer');

create index shiyq_index.index_title on search_catalog(link_title) indextype is ctxsys.context parameters('lexer ctxsys.my_lexer');

//可以定製儲存空間

同步(當原始資料變化時,索引不會自動重建,所以需要手工同步)

alter index index_text rebuild online parameters('sync');

alter index index_title rebuild online parameters('sync');

或alter index shiyq_index.index_text rebuild online parameters('sync');

alter index shiyq_index.index_title rebuild online parameters('sync');

4、結果

select t.*, t.rowid from search_catalog t

where instr(t.page_desc,'健康')>0

select * from search_catalog where contains(page_desc,'健康')>0

5、補遺:

這種情況下當檢索乙個單詞的時候,會使用兩個欄位的全文檢索,使用and ,or 來連線,這樣效能比較低,

而且容易造成cpu的瓶頸,所以可以將兩個字段合為乙個,如將link_title增加到page_desc的後面,然後

sql由

select * from search_catalog t where contains(t.link_title,'健康')>0 and contains (t.page_desc,

'健康')>0

修改為select * from search_catalog t where contains(t.page_desc,'健康')>0

如果搜尋多個單詞,可以用邏輯符號,如 邏輯與(and 或 & ),邏輯或(or 或 | ),邏輯非(not 或 ~),可以

用括號組織

如搜尋包含「健康」,「藥品」或「產品」,但不包含「海虹」的資料

select * from search_catalog t where contains(t.page_desc,'( 健康 & ( 藥品 | 產品) ) ~ 海虹 ')>0 

參考了玉面飛龍的大作,這篇文章非常好,我寫的非常簡單,有問題可以去看看http://epub.itpub.net/4/1.htm,

解除安裝Oracle 9i

1 停止所有oracle服務 2 刪除登錄檔中的所有關於oracle項 1 在hkey local machine software下,刪除oracle目錄 2 在hkey local machine system controlset001 services下,刪除所有oracle項 3 在hke...

oracle9i解除安裝

今天裝了oracle 9i,後來重灌遇到問題因為解除安裝未乾淨。幾經周折終於成功,現將解除安裝步驟供以後參考 1 停止服務 開啟 服務 然後停止所有oracle服務 2 刪除程式 3 刪除登錄檔中的所有關於oracle項 1 在hkey local machine software下,刪除oracl...

oracle9i解除安裝

今天裝了oracle 9i,後來重灌遇到問題因為解除安裝未乾淨。幾經周折終於成功,現將解除安裝步驟供以後參考 1 停止服務 開啟 服務 然後停止所有oracle服務 2 刪除程式 3 刪除登錄檔中的所有關於oracle項 1 在hkey local machine software下,刪除oracl...