日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle全文检索示例

發(fā)布時間:2025/7/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle全文检索示例 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?第一種方法:


一、創(chuàng)建示例表

CREATE TABLE T_FULLTEXT_DEMO

(

ID?NUMBER?NOT NULL,

TITLE?VARCHAR2(100)?NULL,

REMARK?VARCHAR2(200)?NULL,

FILE_NAME?VARCHAR2(200)?NULL,

CONSTRAINT T_FULLTEXT_DEMO_PK PRIMARY KEY ( ID )

);

二、對TITLE和REMARK建立索引

BEGIN

CTXSYS.CTX_DDL.CREATE_PREFERENCE('MYMDS','MULTI_COLUMN_DATASTORE');
CTXSYS.CTX_DDL.SET_ATTRIBUTE('MYMDS', 'COLUMNS', 'TITLE, REMARK');
END;

CREATE INDEX T_FULLTEXT_DEMO_IDX ON T_FULLTEXT_DEMO(TITLE) INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS('DATASTORE MYMDS');

三、建立存儲選項參數(shù)、語法分析器

BEGIN
--CTX_DDL.DROP_PREFERENCE('MY_LEXER');

--CTX_DDL.DROP_PREFERENCE('MY_DATASTORE_PREFS');

CTX_DDL.CREATE_PREFERENCE ('MY_LEXER', 'CHINESE_VGRAM_LEXER');
CTX_DDL.CREATE_PREFERENCE ('MY_DATASTORE_PREFS', 'FILE_DATASTORE');
CTX_DDL.SET_ATTRIBUTE ('MY_DATASTORE_PREFS', 'PATH', 'E:\Projects\My_Documents; E:\Projects\My_Documents\UML_DOC');
END;

四、對文檔建立全文檢索索引

CREATE INDEX T_FULLTEXT_DEMO_FILE_IDX ON T_FULLTEXT_DEMO(FILE_NAME) INDEXTYPE IS CTXSYS.CONTEXT?PARAMETERS('DATASTORE MY_DATASTORE_PREFS LEXER MY_LEXER');

五、插入測試數(shù)據(jù)

INSERT INTO T_FULLTEXT_DEMO(ID,TITLE,REMARK,FILE_NAME) VALUES(1,'德魯克的《管理:任務(wù)、責(zé)任、實踐》','管理類書籍','德魯克的《管理:任務(wù)、責(zé)任、實踐》.doc');

INSERT INTO T_FULLTEXT_DEMO(ID,TITLE,REMARK,FILE_NAME) VALUES(2,'PB控件的屬性事件和函數(shù)','PB技術(shù)書籍','PB控件的屬性事件和函數(shù).pdf');

INSERT INTO T_FULLTEXT_DEMO(ID,TITLE,REMARK,FILE_NAME) VALUES(3,'微軟產(chǎn)品報價','微軟軟件產(chǎn)品報價','微軟產(chǎn)品報價.xls');

INSERT INTO T_FULLTEXT_DEMO(ID,TITLE,REMARK,FILE_NAME) VALUES(4,'JavaScript 5.5','JavaScript語言幫助文檔','JavaScript 5.5.CHM');

INSERT INTO T_FULLTEXT_DEMO(ID,TITLE,REMARK,FILE_NAME) VALUES(5,'ASCII碼','ASCII碼的各種進制表示方式和代表的意思','ASCII碼.htm');

INSERT INTO T_FULLTEXT_DEMO(ID,TITLE,REMARK,FILE_NAME) VALUES(6,'UML數(shù)據(jù)庫建模','UML數(shù)據(jù)庫建模的相關(guān)知識','UML數(shù)據(jù)庫建模.ppt');

六、同步索引和優(yōu)化索引

若此時檢索,應(yīng)沒有數(shù)據(jù)。

select * from T_FULLTEXT_DEMO
where contains(TITLE,'管理')>0;

需要將索引同步

BEGIN
CTXSYS.CTX_DDL.SYNC_INDEX('T_FULLTEXT_DEMO_FILE_IDX');
CTXSYS.CTX_DDL.SYNC_INDEX('T_FULLTEXT_DEMO_IDX');
END;

七、測試全文索引

select * from T_FULLTEXT_DEMO
where contains(TITLE,'管理')>0;

select * from T_FULLTEXT_DEMO
where contains(FILE_NAME,'德魯克')>0;

八、優(yōu)化索引

BEGIN

CTXSYS.CTX_DDL.OPTIMIZE_INDEX('T_FULLTEXT_DEMO_FILE_IDX','FULL');
CTXSYS.CTX_DDL.OPTIMIZE_INDEX('T_FULLTEXT_DEMO_IDX','FULL');
END;

第二種方法:


一、創(chuàng)建示例表

CREATE TABLE T_FULLTEXT_DEMO

(

ID?NUMBER?NOT NULL,

TITLE?VARCHAR2(100)?NULL,

REMARK?VARCHAR2(200)?NULL,

FILE_NAME?BFILE?NULL,

CONSTRAINT T_FULLTEXT_DEMO_PK PRIMARY KEY ( ID )

);

二、創(chuàng)建虛擬目錄并授權(quán)(使用SYSTEM帳號)

CREATE DIRECTORY LOCAL_DIR AS 'E:\Projects\My_Documents';

GRANT READ ON DIRECTORY LOCAL_DIR TO JK_DANGAN;

三、插入示例數(shù)據(jù)

INSERT INTO T_FULLTEXT_DEMO

VALUES (1, '微軟產(chǎn)品報價', '微軟產(chǎn)品報價',BFILENAME('LOCAL_DIR','微軟產(chǎn)品報價.xls'));

INSERT INTO T_FULLTEXT_DEMO

VALUES (2, '電子商務(wù)的瓶頸之我見', '電子商務(wù)的瓶頸之我見',BFILENAME(''LOCAL_DIR','電子商務(wù)的瓶頸之我見.doc'));

四、創(chuàng)建索引

CREATE INDEX T_FULLTEXT_DEMO_FILE_IDX ON T_FULLTEXT_DEMO(FILE_NAME) INDEXTYPE IS CTXSYS.CONTEXT;

五、測試

select * from T_FULLTEXT_DEMO
where contains(file_name,'數(shù)據(jù)庫')>0

?

?

?

?

如何使用Oracle全文檢索功能?

作者:eygle?|?English Version?【轉(zhuǎn)載時請以超鏈接形式標(biāo)明文章出處和作者信息及本聲明】
鏈接:http://www.eygle.com/archives/2005/06/ecieoaoracleeia.html


站內(nèi)相關(guān)文章|Related Articles
  • 如何手工安裝Oracle全文檢索工具?

本文簡要說明全文檢索功能的使用,不做太多的具體說明。
僅供參考使用方法。
1.授權(quán)
對具體使用全文檢索的用戶授權(quán).

$ sqlplus "/ as sysdba"SQL*Plus: Release 9.2.0.4.0 - Production on Sun May 15 20:00:10 2005Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.Connected to: Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release 9.2.0.4.0 - ProductionSQL> grant ctxapp to club;Grant succeeded.SQL> connect ctxsys/password Connected. SQL> grant execute on ctx_ddl to club;Grant succeeded.

2.使用應(yīng)用用戶連接
創(chuàng)建域索引
SQL> connect club/password Connected.SQL> begin ctx_ddl.create_preference('club_lexer','chinese_vgram_lexer'); end;2 /PL/SQL procedure successfully completed.Elapsed: 00:00:00.03SQL> create index id_cont_msg 2 on jivemessage ( SUBJECT ) indextype is ctxsys.context parameters('lexer club_lexer'); Index created.Elapsed: 00:01:22.42SQL> select count(*) from jivemessage where contains(subject,'幸福')>0;COUNT(*) ----------1847Elapsed: 00:00:00.17 SQL> select count(*) from jivemessage where subject like '%幸福%';COUNT(*) ----------1841Elapsed: 00:00:02.89

3.檢索比較
以下是一個全文檢索的示例,我們檢索'abc',那么全文檢索可以把包含'abc'的任何變化組合都查詢出來,包括大小寫、全半角,而如果用單純的SQL實現(xiàn)同樣的結(jié)果,則需要多次like之后union all,其性能差距是不可想象的。
全文檢索在類似文本模糊查詢上具有極大的優(yōu)勢。當(dāng)然也可能存在問題,即詞法分析器是否準(zhǔn)確,會否漏掉部分內(nèi)容等。
總的說來,滿足需求的技術(shù)就是好的技術(shù),是否使用一項技術(shù)應(yīng)該通過實踐來檢驗.<br>
SQL> select subject from jivemessage where contains(subject,'abc') >0;SUBJECT -------------------------------------------------------------------------------- 【游戲】 把你的名字的首字母用智能ABC打出,看能出來什么? 游戲——把你的名字首字母用智能ABC打出來 智能ABC暗藏殺機 ABC ABC ABC ABC ABC ABC 哈哇abc abcSUBJECT -------------------------------------------------------------------------------- abc ABC 振奮愛的激情方案ABC 智能ABC的錯嗎? ABC全選 瓜果美容ABC 經(jīng)典英文歌曲ABC,不好你拿版磚砍我,好就回帖頂一下! ×××abc Re: abc Re: abc Re: abcSUBJECT -------------------------------------------------------------------------------- abc 測試發(fā)貼""abc abc25 rows selected.Elapsed: 00:00:00.04

3.定時優(yōu)化同步域索引?
創(chuàng)建定時任務(wù),定期優(yōu)化和同步域索引

SQL> create or replace procedure hsp_sync_index as2 begin3 ctx_ddl.sync_index('id_cont_msg');4 end;5 /Procedure created.Elapsed: 00:00:00.08 SQL> VARIABLE jobno number; SQL> BEGIN2 DBMS_JOB.SUBMIT(:jobno,'hsp_sync_index();', 3 SYSDATE, 'SYSDATE + (1/24/4)'); 4 commit; 5 END; 6 /PL/SQL procedure successfully completed.Elapsed: 00:00:00.27 SQL> create or replace procedure hsp_optimize_index as2 begin3 ctx_ddl.optimize_index('id_cont_msg','FULL');4 end;5 /SQL> VARIABLE jobno number; SQL> BEGIN2 DBMS_JOB.SUBMIT(:jobno,'hsp_optimize_index();', 3 SYSDATE, 'SYSDATE + 1'); 4 commit; 5 END;6 / Procedure created.Elapsed: 00:00:00.03PL/SQL procedure successfully completed.Elapsed: 00:00:00.02 SQL>

轉(zhuǎn)載于:https://blog.51cto.com/1311321/441620

總結(jié)

以上是生活随笔為你收集整理的Oracle全文检索示例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。