亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Oracle > 正文

Oracle 如何創建和使用全文索引

2024-08-29 13:59:01
字體:
來源:轉載
供稿:網友

不使用Oracle text功能,也有很多方法可以在Oracle數據庫中搜索文本.可以使用標準的INSTR函數和LIKE操作符實現。

SELECT *FROM mytext WHERE INSTR (thetext, 'Oracle') > 0;SELECT * FROM mytext WHERE thetext LIKE '%Oracle%';

  有很多時候,使用instr和like是很理想的, 特別是搜索僅跨越很小的表的時候.然而通過這些文本定位的方法將導致全表掃描,對資源來說消耗比較昂貴,而且實現的搜索功能也非常有限,因此對海量的文本數據進行搜索時,建議使用oralce提供的全文檢索功能 建立全文檢索的步驟步驟一 檢查和設置數據庫角色首先檢查數據庫中是否有CTXSYS用戶和CTXAPP腳色。如果沒有這個用戶和角色,意味著你的數據庫創建時未安裝intermedia功能。你必須修改數據庫以安裝這項功能。 默認安裝情況下,ctxsys用戶是被鎖定的,因此要先啟用ctxsys的用戶。 步驟二 賦權 在ctxsys用戶下把ctx_ddl的執行權限賦于要使用全文索引的用戶,例:

grant execute on ctx_ddl to pomoho;

一、設置詞法分析器

  Oracle實現全文檢索,其機制其實很簡單。即通過Oracle專利的詞法分析器(lexer),將文章中所有的表意單元(Oracle稱為term)找出來,記錄在一組以dr$開頭的表中,同時記下該term出現的位置、次數、hash值等信息。檢索時,Oracle從這組表中查找相應的term,并計算其出現頻率,根據某個算法來計算每個文檔的得分(score),即所謂的‘匹配率'。而lexer則是該機制的核心,它決定了全文檢索的效率。Oracle針對不同的語言提供了不同的lexer,而我們通常能用到其中的三個:

  basic_lexer:針對英語。它能根據空格和標點來將英語單詞從句子中分離,還能自動將一些出現頻率過高已經失去檢索意義的單詞作為‘垃圾'處理,如if , is等,具有較高的處理效率。但該lexer應用于漢語則有很多問題,由于它只認空格和標點,而漢語的一句話中通常不會有空格,因此,它會把整句話作為一個term,事實上失去檢索能力。以‘中國人民站起來了'這句話為例,basic_lexer分析的結果只有一個term ,就是‘中國人民站起來了'。此時若檢索‘中國',將檢索不到內容。

  chinese_vgram_lexer:專門的漢語分析器,支持所有漢字字符集(ZHS16CGB231280ZHS16GBKZHT32EUCZHT16BIG5ZHT32TRISZHT16MSWIN950ZHT16HKSCSUTF8)。該分析器按字為單元來分析漢語句子。‘中國人民站起來了'這句話,會被它分析成如下幾個term: ‘中',‘中國',‘國人',‘人民',‘民站',‘站起',起來',‘來了',‘了'??梢钥闯觯@種分析方法,實現算法很簡單,并且能實現‘一網打盡',但效率則是差強人意。

  chinese_lexer:這是一個新的漢語分析器,只支持utf8字符集。上面已經看到,chinese vgram lexer這個分析器由于不認識常用的漢語詞匯,因此分析的單元非常機械,像上面的‘民站',‘站起'在漢語中根本不會單獨出現,因此這種term是沒有意義的,反而影響效率。chinese_lexer的最大改進就是該分析器能認識大部分常用漢語詞匯,因此能更有效率地分析句子,像以上兩個愚蠢的單元將不會再出現,極大提高了效率。但是它只支持utf8,如果你的數據庫是zhs16gbk字符集,則只能使用笨笨的那個Chinese vgram lexer.
如果不做任何設置,Oracle缺省使用basic_lexer這個分析器。要指定使用哪一個lexer,可以這樣操作:

BEGIN ctx_ddl.create_preference ('my_lexer', 'chinese_vgram_lexer');END;/

其中my_lexer是分析器名。

二、建立全文索引

在建立intermedia索引時,指明所用的lexer:

CREATE INDEX  myindex ON mytable(mycolumn) indextype is ctxsys.context parameters('lexer my_lexer');

※個人體會:全文索引建立后,用pl/sql developer工具view table,在index這一欄是看不到索引信息的。

而本人在刪除全文索引時遇到過一下報錯:

SQL> drop index searchkeytbl_key;
drop index searchkeytbl_key
ORA-29868: cannot issue DDL on a domain index marked as LOADING

解決方法:

ORA-29868: cannot issue DDL on a domain index marked as LOADING
說明:在創建索引的時候斷開、重啟等導致索引中斷沒有執行成功,之后再drop或者rebuild等操作的時候都會報此錯誤
解決:只能drop index ind_name force強行刪除,然后再重建

三、索引同步維護

用以下的兩個job來完成(該job要建在和表同一個用戶下) :

VARIABLE jobno number;BEGINDBMS_JOB.SUBMIT(:jobno,'ctx_ddl.sync_index(''index_name'');',SYSDATE, 'SYSDATE + (1/24/4)');commit;END;      //同步 VARIABLE jobno number;BEGINDBMS_JOB.SUBMIT(:jobno,'ctx_ddl.optimize_index(''myindex'',''FULL'');',SYSDATE, 'SYSDATE + 1');commit;     //優化

建完后手動運行下:

exec dbms_job.run(jobno);

※個人體會:運行job可能會有問題,此時可以單獨運行索引,嘗試一下

exec ctx_ddl.sync_index('index_name');

如果單獨運行沒有問題,則檢查job是否寫錯或者當前操作的oracle數據庫用戶有無運行存儲過程的權限

SQL> exec dbms_job.run(190);
begin dbms_job.run(190); end;

ORA-12011: execution of 1 jobs failed
ORA-06512: at "SYS.DBMS_IJOB", line 406
ORA-06512: at "SYS.DBMS_JOB", line 272
ORA-06512: at line 1

以上報錯就是用戶沒有運行任何存儲過程造成的,此時需要對用戶加上這個權限:

SQL> grant execute any procedure to oracle_username;

再看一下job的情況

select * from user_jobs;

四、測試

關聯查詢: select * from table_name where contains (column_name,'keyword') >0;
SQL> select * from searchkeytbl where type='城市' and contains (key,'楊浦') >0;

USERNAME             TYPE                                     KEY
-------------------- ---------------------------------------- --------------------------------------------------------------------------------
mujian80             城市                                     上海市楊浦區

五、問題

加全文索引遇到的問題(不斷更新)

SQL> create index gh_ghname_idx on gh(ghname) indextype is ctxsys.context parameters('lexer gh_ghname_lexer');
create index gh_ghname_idx on gh(ghname) indextype is ctxsys.context parameters('lexer gh_ghname_lexer')

ORA-24795: Illegal COMMIT attempt made
ORA-29855: error occurred in the execution of ODCIINDEXCREATE routine
ORA-20000: Oracle Text error:
DRG-50857: oracle error in drvddl.IndexCreate
ORA-20000: Oracle Text error:
DRG-50857: oracle error in drvdml.MaintainKTab
ORA-24795: Illegal COMMIT attempt made
ORA-06512: at "CTXSYS.DRUE", line 160
ORA-06512: at "CTXSYS.TEXTINDEXMETHODS", line 364
To avoid the error, please use one of the following solutions

1. Don't use a 32k-blocksized tablespace to store the internal index objects
- or -
2. Download Patch 5596325 from Metalink and apply it as described in the README file.

看一下 可能是用于創建索引的表空間不夠了

reports——>DBA——>total free space   pl/sql developer工具,查看表空間的剩余空間
select * from v$datafile;              查看數據文件信息


注:相關教程知識閱讀請移步到oracle教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色偷偷偷综合中文字幕;dd| 精品免费在线视频| 日韩国产精品一区| 不卡av电影院| 日韩影视在线观看| 136fldh精品导航福利| 欧美性生活大片免费观看网址| 91网站在线看| 亚洲精品国产拍免费91在线| 色先锋资源久久综合5566| 欧美日韩激情小视频| 亚洲欧美日韩国产成人| 92裸体在线视频网站| 欧美特级www| 视频在线观看一区二区| 国产精品男女猛烈高潮激情| 欧美中文字幕视频在线观看| 国产精品91一区| 国产欧美日韩精品在线观看| 欧美精品videos| 久久久久久久久国产精品| 亚洲小视频在线观看| 热久久视久久精品18亚洲精品| 黑人精品xxx一区| 亚洲激情久久久| 亚洲精品视频播放| 久久人91精品久久久久久不卡| 国产精品久久久久久久久久尿| 国产性色av一区二区| 日韩69视频在线观看| 爽爽爽爽爽爽爽成人免费观看| 成人黄色在线播放| 精品国偷自产在线视频| 日韩欧美亚洲国产一区| 深夜精品寂寞黄网站在线观看| 久久人人爽人人爽人人片av高请| 久久97精品久久久久久久不卡| 91免费视频网站| 亚洲精品午夜精品| 久久精品小视频| 久久精品91久久久久久再现| 欧美激情精品久久久久| 日韩在线视频观看正片免费网站| 国产精品久久久久久婷婷天堂| 亚洲无限乱码一二三四麻| 热久久99这里有精品| 欧美www视频在线观看| 一区二区三区动漫| 国内精品久久久久伊人av| 亚洲精品丝袜日韩| 亚洲一区二区在线| 97视频在线观看免费| 少妇精69xxtheporn| 国产精品久久久久久久久久ktv| 97在线精品国自产拍中文| 欧美黑人狂野猛交老妇| 久久久999国产精品| 国产偷国产偷亚洲清高网站| 国产一区二区三区在线视频| 国产va免费精品高清在线| 亚洲淫片在线视频| 高清亚洲成在人网站天堂| 日韩精品视频在线播放| 欧美电影免费观看大全| 国产手机视频精品| 日韩电影免费在线观看中文字幕| 欧美巨猛xxxx猛交黑人97人| 久久99久国产精品黄毛片入口| 欧美视频免费在线观看| 中日韩美女免费视频网址在线观看| 91精品国产高清自在线| 欧美性受xxxx黑人猛交| 亚洲欧美日本精品| 精品日韩美女的视频高清| 久久99精品久久久久久噜噜| xx视频.9999.com| 岛国精品视频在线播放| 亚洲国产精品va在线观看黑人| 国产欧美在线视频| 亚洲精品一区中文字幕乱码| 国产成人在线一区| 欧美黄色小视频| 国产精品a久久久久久| 欧美性受xxxx黑人猛交| 久久香蕉频线观| 91精品视频播放| 精品久久久久久| 欧美日韩在线视频观看| 91精品国产综合久久香蕉的用户体验| 欧美成人全部免费| 视频在线观看99| 亚洲国产成人精品女人久久久| 国产97色在线|日韩| 国产做受高潮69| 亚洲xxx大片| 欧美成人黄色小视频| 91po在线观看91精品国产性色| 色哟哟网站入口亚洲精品| 国产精品高潮视频| 国产欧美日韩中文| 国产精品三级美女白浆呻吟| 久久人人爽人人爽人人片亚洲| 欧美大片免费观看| 91日本在线视频| 97超级碰碰碰| 国产成人精品优优av| 日韩欧美视频一区二区三区| 欧美放荡办公室videos4k| 亚洲男人的天堂在线播放| 日本最新高清不卡中文字幕| 亚洲变态欧美另类捆绑| 九九精品在线观看| 中文字幕一精品亚洲无线一区| 亚洲精品中文字幕女同| 精品精品国产国产自在线| 日韩美女视频免费在线观看| 亚洲第一福利网站| 欧美劲爆第一页| 国产一区二区三区日韩欧美| 久久99精品久久久久久噜噜| 91社影院在线观看| 97国产精品人人爽人人做| 国产99久久精品一区二区 夜夜躁日日躁| 亚洲在线视频福利| 日韩中文第一页| 久久91亚洲精品中文字幕奶水| 国内精品模特av私拍在线观看| 欧美激情第一页xxx| 欧美成人免费全部观看天天性色| 在线视频精品一| 黄色成人av网| 精品国产鲁一鲁一区二区张丽| 中文字幕精品网| 欧美乱妇高清无乱码| 成人精品一区二区三区电影黑人| 欧美日韩精品中文字幕| 成人国产精品av| 欧美成人性色生活仑片| 成人动漫网站在线观看| 91在线视频精品| 欧美国产日韩二区| 国产精品久久久久久久久久小说| 菠萝蜜影院一区二区免费| 日本高清视频精品| 亚洲最新中文字幕| 亚洲成人免费网站| 国产一区二区丝袜| 欧美视频在线观看 亚洲欧| 欧美理论在线观看| 欧美性xxxxx极品| 国产精品亚洲一区二区三区| 日本精品久久久久久久| 69av在线播放| 久久国产精品久久久久久| 欧美理论在线观看| 国色天香2019中文字幕在线观看| 国产91色在线|免| 国产精品18久久久久久麻辣| 日韩精品免费电影| 久久精品国产成人| 欧美视频一区二区三区…| 久久久极品av| 日韩欧美精品在线观看| 国产三级精品网站|