oracle全文檢索(oracle text)記錄

2021-09-01 10:55:13 字數 1980 閱讀 4911

[size=large]

1.全文檢索和普通檢索的區別

不使用oracle text功能,當然也有很多方法可以在oracle資料庫中搜尋文字,比如instr函式和like操作:

select *from mytext where instr (thetext, 'oracle') > 0;select * from mytext where thetext like '%oracle%';

有很多時候,使用instr和like是很理想的, 特別是搜尋僅跨越很小的表的時候。然而通過這些文字定位的方法將導致全表掃瞄,對資源來說消耗比較昂貴,而且實現的搜尋功能也非常有限,因此對海量的文字資料進行搜尋時,建議使用oralce提供的全文檢索功能。

附:這裡順帶記錄一下instr和like:

oracle中,可以使用 instr 函式對某個字串進行判斷,判斷其是否含有指定的字元。其語法為:instr(string, substring, position, occurrence)。

string:代表源字串(寫入欄位則表示此字段的內容)。

substring:代表想從源字串中查詢的子串。

position:代表查詢的開始位置,該引數可選的,預設為1。

occurrence:代表想從源字元中查詢出第幾次出現的substring,該引數也是可選的,預設為1。

position 的值為負數,那麼代表從右往左進行查詢。

instr和like的效能比較

其實從效率角度來看,誰能用到索引,誰的查詢速度就會快。

like有時可以用到索引,例如:name like 『李%』,而當下面的情況時索引會失效:name like 『%李』。所以一般我們查詢中文類似於『%字元%』時,索引都會失效。與其他資料庫不同的是,oracle支援函式索引。例如在name欄位上建個instr索引,查詢速度就比較快了,這也是為什麼instr會比like效率高的原因。

注:instr(title,』手冊』)>0 相當於like『%手冊%』

instr(title,』手冊』)=0 相當於not like『%手冊%』

2.設定全文檢索

步驟步驟一:檢查和設定資料庫角色

步驟二:賦權

步驟三:建立分析器(lexer)

步驟四:建立索引

步驟五:測試

[/size]

--建立oracle全文檢索

--1.解鎖ctxsys使用者,在system使用者下操作

alter user ctxsys account unlock;

--2.將ctx_ddl包的操作許可權賦給使用者,在system使用者下操作

grant execute on ctx_ddl to tfyj;

--3.建立分析器,在tfyj使用者下

exec ctx_ddl.create_preference ('tfyj_lexer', 'chinese_vgram_lexer');

--4.建立過濾片語(沒用到)

exec ctx_ddl.create_stoplist('my_stoplist');

--5.自定義過濾片語(沒用到)

ctx_ddl.add_stopword('my_stoplist','****');

ctx_ddl.add_stopword('my_stoplist','股份****');

--6.建立索引,在颱風預警使用者下建立

create index tfyj_facility_index on f_tower(tower_name) indextype is ctxsys.context parameters('lexer tfyj_lexer');

--7.查詢測試

select score(1),t.* from f_tower t where contains(tower_name,'110kv 濠保線 n8 ',1)>0 order by score(1) desc;

[size=large]詳情

oracle全文檢索

測試環境oracle11g begin ctx ddl.create preference test lexer chinese vgram lexer ctx ddl.create preference sms address lexer chinese lexer end create inde...

oracle全文檢索

先建立個表 可見content是blob型的,本文就是給content欄位全文檢索 注 該錶名為sycontent 建立全文檢索lexer 建立全文索引時,你用的使用者必須要有ctx dll許可權,如果沒有再,在該使用者的超級管理使用者下的sysdba登入執行 grant execute on ct...

什麼叫全文檢索 全文檢索概念

全文檢索是指計算機索引程式通過掃瞄文章中的每乙個詞,對每乙個詞建立乙個索引,指明該詞在文章中出現的次數和位置,當使用者查詢時,檢索程式就根據事先建立的索引進行查詢,並將查詢的結果反饋給使用者的檢索方式。這個過程類似於通過字典中的檢索字表查字的過程。全文檢索的方法主要分為按字檢索和按詞檢索兩種。按字檢...