欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

oracle如何全文索引 oracle索引的使用

如何更好的使用Oracle全文索引

對(duì)多字段建立全文索引 很多時(shí)候需要從多個(gè)文本字段中查詢滿足條件的記錄,這時(shí)就需要建立針對(duì)多個(gè)字段的全文索引,例如需要從pmhsubjects(專題表)的subjectname(專題名稱)和briefintro(簡(jiǎn)介)上進(jìn)行全文檢索,則需要按以下步驟進(jìn)行操作: ?? 建議多字段索引的preference 以ctxsys登錄,并執(zhí)行: 全文索引的維護(hù) 對(duì)于CTXSYS.CONTEXT索引,當(dāng)應(yīng)用程序?qū)磉M(jìn)行DML操作后,對(duì)基表的索引維護(hù)是必須的。索引維護(hù)包括索引同步和索引優(yōu)化。 在索引建好后,我們可以在該用戶下查到Oracle自動(dòng)產(chǎn)生了以下幾個(gè)表:(假設(shè)索引名為myindex): DR$myindex$I、DR$myindex$K、DR$myindex$R、DR$myindex$N其中以I表最重要,可以查詢一下該表,看看有什么內(nèi)容: 這里就不列出查詢接過了??梢钥吹?,該表中保存的其實(shí)就是Oracle 分析你的文檔后,生成的term記錄在這里,包括term出現(xiàn)的位置、次數(shù)、hash值等。當(dāng)文檔的內(nèi)容改變后,可以想見這個(gè)I表的內(nèi)容也應(yīng)該相應(yīng)改變,才能保證Oracle在做全文檢索時(shí)正確檢索到內(nèi)容(因?yàn)樗^全文檢索,其實(shí)核心就是查詢這個(gè)表)。這就用到sync(同步) 和 optimize(優(yōu)化)了。 同步(sync): 將新的term 保存到I表; 優(yōu)化(optimize): 清除I表的垃圾,主要是將已經(jīng)被刪除的term從I表刪除。 當(dāng)基表中的被索引文檔發(fā)生insert、update、delete操作的時(shí)候,基表的改變并不能馬上影響到索引上直到同步索引。可以查詢視圖CTX_USER_PENDING查看相應(yīng)的改動(dòng)。例如: 同步和優(yōu)化方法: 可以使用Oracle提供的ctx_ddl包同步和優(yōu)化索引 一. 對(duì)于CTXCAT類型的索引來說, 當(dāng)對(duì)基表進(jìn)行DML操作的時(shí)候,Oracle自動(dòng)維護(hù)索引。對(duì)文檔的改變馬上反映到索引中。CTXCAT是事務(wù)形的索引。 索引的同步 在對(duì)基表插入,修改,刪除之后同步索引。推薦使用sync同步索引。語(yǔ)法: 指定一個(gè)大的內(nèi)存時(shí)候可以加快索引效率和查詢速度,且索引有較少的碎片 part_name 同步哪個(gè)分區(qū)索引。 parallel_degree 并行同步索引。設(shè)置并行度。 例如: 同步索引myindex:Exec ctx_ddl.sync_index ('myindex'); 實(shí)施建議:建議通過oracle的job對(duì)索引進(jìn)行同步 索引的優(yōu)化 經(jīng)常的索引同步將會(huì)導(dǎo)致你的CONTEXT索引產(chǎn)生碎片。索引碎片嚴(yán)重的影響了查詢的反應(yīng)速度。你可以定期優(yōu)化索引來減少碎片,減少索引大小,提高查詢效率。

我們提供的服務(wù)有:網(wǎng)站制作、做網(wǎng)站、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、南城ssl等。為上千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的南城網(wǎng)站制作公司

當(dāng)文本從表中刪除的時(shí)候,Oracle Text標(biāo)記刪除的文檔,但是并不馬上修改索引。因此,就的文檔信息占據(jù)了不必要的空間,導(dǎo)致了查詢額外的開銷。你必須以FULL模式優(yōu)化索引,從索引中刪除無效的舊的信息。這個(gè)過程叫做垃圾處理。當(dāng)你經(jīng)常的對(duì)表文本數(shù)據(jù)進(jìn)行更新,刪除操作的時(shí)候,垃圾處理是很必要的。

oracle 全文索引怎么刪除

一 查看索引名select * from user_indexes;二 刪除索引drop index index_name;

oracle數(shù)據(jù)庫(kù)實(shí)現(xiàn)全文檢索

Oracle全文檢索配置方法:

1.檢查數(shù)據(jù)庫(kù)是否具有全文檢索功能(這是針對(duì)已經(jīng)建成使用的數(shù)據(jù)庫(kù))

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

使用contains函數(shù)的時(shí)候,若沒有全文檢索則會(huì)報(bào)錯(cuò)的。

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

sqlplus / as sysdba ?--進(jìn)入控制臺(tái)

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

3.創(chuàng)建全文檢索使用的用戶和角色及相應(yīng)的包,則需要執(zhí)行oracle自帶的一個(gè)腳本:cd $ORACLE_HOME/ctx/admin/catctx.sql

還是在sqlplus中執(zhí)行:

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

在執(zhí)行這個(gè)腳本的時(shí)候,輸入了幾個(gè)參數(shù),第一個(gè)參數(shù)ctxsys為ctxsys用戶的密碼

第二個(gè)參數(shù)Idx_ctxsys為ctxsys用戶要使用的表空間

第三個(gè)參數(shù)temp為ctxsys用戶使用的臨時(shí)表空間

第四個(gè)參數(shù)nolock為ctxsys用戶處于解鎖狀態(tài)。

4.創(chuàng)建完成后,要登錄ctxsys用戶

connect ctxsys/ctxsys

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

5.創(chuàng)建全文索引語(yǔ)法分析器

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

因此

grant?execute?on?ctxsys.ctx_ddl?to?sgpm?with?grant?option;

connect sgpm/sgpm

設(shè)置語(yǔ)法分析器:

exec?ctx_ddl.drop_preference('chinalexer');

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

設(shè)置詞法屬性:

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.創(chuàng)建索引

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');??--執(zhí)行的是個(gè)性化方法。

end;

/

普通的就是用:

exec?ctx_ddl.sync_index('idx_c_cons_name');

到此,全文檢索創(chuàng)建成功,contains函數(shù)就可以正常使用了。

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

Oracle全文檢索是什么意思?

全文檢索是一種將文件中所有文本與檢索項(xiàng)匹配的文字資料檢索方法。全文檢索系統(tǒng)是按照全文檢索理論建立起來的用于提供全文檢索服務(wù)的軟件系統(tǒng)。

判斷檢索效果的兩個(gè)指標(biāo):

查全率=被檢出相關(guān)信息量/相關(guān)信息總量(%)

查準(zhǔn)率=被檢出相關(guān)信息量/被檢出信息總量(%)

Oracle全文檢索配置方法:

1.檢查數(shù)據(jù)庫(kù)是否具有全文檢索功能(這是針對(duì)已經(jīng)建成使用的數(shù)據(jù)庫(kù))

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

使用contains函數(shù)的時(shí)候,若沒有全文檢索則會(huì)報(bào)錯(cuò)的。

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

sqlplus / as sysdba ?--進(jìn)入控制臺(tái)

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

3.創(chuàng)建全文檢索使用的用戶和角色及相應(yīng)的包,則需要執(zhí)行oracle自帶的一個(gè)腳本:cd $ORACLE_HOME/ctx/admin/catctx.sql

還是在sqlplus中執(zhí)行:

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

在執(zhí)行這個(gè)腳本的時(shí)候,輸入了幾個(gè)參數(shù),第一個(gè)參數(shù)ctxsys為ctxsys用戶的密碼

第二個(gè)參數(shù)Idx_ctxsys為ctxsys用戶要使用的表空間

第三個(gè)參數(shù)temp為ctxsys用戶使用的臨時(shí)表空間

第四個(gè)參數(shù)nolock為ctxsys用戶處于解鎖狀態(tài)。

4.創(chuàng)建完成后,要登錄ctxsys用戶

connect ctxsys/ctxsys

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

5.創(chuàng)建全文索引語(yǔ)法分析器

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

因此

grant?execute?on?ctxsys.ctx_ddl?to?sgpm?with?grant?option;

connect sgpm/sgpm

設(shè)置語(yǔ)法分析器:

exec?ctx_ddl.drop_preference('chinalexer');

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

設(shè)置詞法屬性: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.創(chuàng)建索引

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');??--執(zhí)行的是個(gè)性化方法。

end;

/

普通的就是用:

exec?ctx_ddl.sync_index('idx_c_cons_name');

到此,全文檢索創(chuàng)建成功,contains函數(shù)就可以正常使用了。

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

oracle 數(shù)據(jù)庫(kù) 索引 全文索引

create

index創(chuàng)建的索引是為了提高查詢速度,

你用的contains是Oracle的信息檢索功能,需要指定一個(gè)包含有效context索引的列,

如果select子句中有l(wèi)abel的話,最后還需要一個(gè)比較操作符才能完成查詢,

你可以找一些關(guān)于Oracle

Text索引的資料看看

如何實(shí)現(xiàn)涉及多個(gè)表的多個(gè)字段的全文檢索功能(oracle)?

oracle可以支持多個(gè)字段上的全文索引,但如果還涉及到多張表的話,就只能在每張表上建一個(gè)全文索引。但這樣的話,查詢時(shí)很不方便。而且如果涉及到的表或者字段發(fā)生變化,需要重新建全文索引,可擴(kuò)展性不佳。

另一個(gè)思路是專門建立一張中間表,其中包括以下字段:表名,字段名,字段值,對(duì)象ID。在字段值這個(gè)字段上建立全文索引。然后定時(shí)的將原來四張表中須檢索的字段同步到此中間表(可考慮用物化視圖)。查詢時(shí),直接對(duì)此中間表進(jìn)行查詢即可。

舉個(gè)例子:假設(shè)原表是文章表,其中有如下一條數(shù)據(jù):

ID

標(biāo)題

內(nèi)容

作者

1

德川家康為什么能統(tǒng)一日本?

請(qǐng)教一下,為什么最后是德川家康統(tǒng)一日本呢?

德川家康粉

現(xiàn)在需要檢索在標(biāo)題,內(nèi)容或作者字段中存在“德川家康”的數(shù)據(jù)。

首先,需要將原數(shù)據(jù)同步到中間表,變成以下三條數(shù)據(jù):

表名

字段名

字段值

對(duì)象ID

文章表

標(biāo)題

德川家康為什么能統(tǒng)一日本?

1

文章表

內(nèi)容

請(qǐng)教一下,為什么最后是德川家康統(tǒng)一日本呢?

1

文章表

作者

德川家康粉

1

通過在字段值這個(gè)字段上全文檢索“德川家康”,可以篩選出以上三條數(shù)據(jù)。這三條數(shù)據(jù)都指向文章表中的ID=1的文章。從文章表里取出這條數(shù)據(jù),檢索就成功結(jié)束了。

此方法的優(yōu)點(diǎn):一是檢索的速度比較快;二是可以兼容指定表或指定字段的檢索;三是需要檢索的表或字段可以動(dòng)態(tài)刪減,可擴(kuò)展性好。

主要的缺點(diǎn)一是需要一張中間表,并定時(shí)同步,消耗額外的服務(wù)器資源,二是同步的過程會(huì)造成延時(shí),即新修改但尚未同步的數(shù)據(jù)會(huì)暫時(shí)檢索不到。

分享題目:oracle如何全文索引 oracle索引的使用
文章網(wǎng)址:http://chinadenli.net/article20/hpieco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、網(wǎng)站設(shè)計(jì)網(wǎng)站收錄、外貿(mào)網(wǎng)站建設(shè)動(dòng)態(tài)網(wǎng)站、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

營(yíng)銷型網(wǎng)站建設(shè)