原創(chuàng)|其它|編輯:郝浩|2009-09-01 10:12:27.000|閱讀 432 次
概述:Oracle Text 是一種功能強大的搜索技術(shù),它內(nèi)置于 Oracle 數(shù)據(jù)庫的所有版本(包括免費提供的快捷版 (XE))中。它所提供的開發(fā) API 使軟件開發(fā)人員能夠輕松實現(xiàn)功能齊備的內(nèi)容搜索應(yīng)用程序。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
Oracle Text 是一種功能強大的搜索技術(shù),它內(nèi)置于 Oracle 數(shù)據(jù)庫的所有版本(包括免費提供的快捷版 (XE))中。它所提供的開發(fā) API 使軟件開發(fā)人員能夠輕松實現(xiàn)功能齊備的內(nèi)容搜索應(yīng)用程序。
Oracle Text 可用于搜索結(jié)構(gòu)化和非結(jié)構(gòu)化文檔,是對 SQL 通配符匹配的補充。Oracle Text 支持使用基本的布爾運算符(AND、OR、NOT、NEAR 等)將多個搜索條目組合到一起,此外,它還具有更高級的功能,如 soundex 和模糊搜索,以及結(jié)果排序等。該技術(shù)支持?jǐn)?shù)百種文件類型,包括 Microsoft Office 和 PDF。Oracle Text 適合多種與搜索相關(guān)的使用情況和存儲結(jié)構(gòu)。Text 的應(yīng)用領(lǐng)域包括電子商務(wù)、文檔和記錄管理,以及問題跟蹤等。可檢索的文本可以結(jié)構(gòu)化形式駐留在數(shù)據(jù)庫中,也可以非結(jié)構(gòu)化形式駐留在本地文件系統(tǒng)中或 Web 上。
Oracle Text 提供完整的基于 SQL 的搜索 API,該 API 包含自定義查詢運算符、DDL 語法擴展、一組 PL/SQL 過程和數(shù)據(jù)庫視圖。通過 Text API,應(yīng)用程序開發(fā)人員可完全控制索引、查詢、安全、演示以及有時會需要的軟件配置,在開發(fā)即需即用的非自定義軟件時尤為如此。通過即需即用的軟件產(chǎn)品,您希望使軟件的配置盡可能簡約,即使這意味著要在產(chǎn)品開發(fā)中多做一些前期工作也是如此。降低應(yīng)用程序的復(fù)雜性通常會在產(chǎn)品生命周期的后期,尤其是在支持、維護和未來產(chǎn)品開發(fā)階段中見到成效。
Oracle Text 還支持文檔級授權(quán),而文檔級授權(quán)通常很難在統(tǒng)一的同時保持高性能。借助 Text,組合了關(guān)系數(shù)據(jù)與非結(jié)構(gòu)化數(shù)據(jù)的混和查詢也得到了很好的支持。對于授權(quán),這意味著您可以將全文搜索和授權(quán)合并到一個查詢中。獨立結(jié)果集和獲得最終結(jié)果所需的過濾階段的數(shù)量可最大程度地縮減,從而簡化了應(yīng)用程序的開發(fā)。Oracle Text 使應(yīng)用程序開發(fā)人員從繁瑣的開發(fā)中解脫出來,可以集中精力進(jìn)行性能優(yōu)化。
Oracle Text 也是編程語言不可知的,并且也可以同樣卓越的表現(xiàn)為 PHP 以及 Java 應(yīng)用程序工作。
前一段時間,我需要提高企業(yè)內(nèi)容管理 (ECM) 系統(tǒng)的搜索功能。我首先對 Oracle Text 的使用進(jìn)行了評估。評估證明 Oracle Text 是一種構(gòu)建應(yīng)用程序搜索非常可行的技術(shù):它具有高級搜索功能,支持大量不同的文件類型,可高度自定義,同時高度可伸縮。原有搜索技術(shù)的一個缺點是,您需要在數(shù)據(jù)庫外部運行文件內(nèi)容搜索,然后運行數(shù)據(jù)庫元數(shù)據(jù)搜索,對結(jié)果進(jìn)行授權(quán),最后,合并獨立的結(jié)果集。使用 Oracle Text,所有這些操作都可以在數(shù)據(jù)庫中進(jìn)行。ECM 系統(tǒng)已經(jīng)使用 Oracle 數(shù)據(jù)庫來存儲元數(shù)據(jù)。因為此項技術(shù)已經(jīng)推出,因此客戶自然會選擇使用,而且它也不會給客戶增加任何成本。
在數(shù)據(jù)庫中執(zhí)行自由文本搜索查詢的簡單方法類似于:
SELECT * FROM issues
WHERE LOWER(author) LIKE '%word1%' AND LOWER(author) LIKE '%word2%' ...
使用這種方法,每一列都需要與每個關(guān)鍵字單獨進(jìn)行匹配。在每一列中,可以任何順序與關(guān)鍵字進(jìn)行匹配。然而,關(guān)系數(shù)據(jù)庫的設(shè)計使得它不會像上面那樣有效地執(zhí)行查詢,而且使用這種方法會產(chǎn)生極其不可伸縮的應(yīng)用程序。當(dāng)然,您可以設(shè)計自己的索引和搜索解決方案,但是,那樣您可能不會優(yōu)化使用您的資源,在您已經(jīng)為將搜索技術(shù)作為數(shù)據(jù)庫的一部分付出了成本的情況下尤為如此。
本文討論 Oracle Text 在虛擬的問題跟蹤應(yīng)用程序中的使用。在這個應(yīng)用程序中,用戶可以創(chuàng)建一些包含元數(shù)據(jù)和可選附加文件的問題。該應(yīng)用程序利用 Oracle Text 實現(xiàn)元數(shù)據(jù)和可選附加文件內(nèi)容的全文搜索功能。
此處給出的示例已經(jīng)在 Linux 的 Oracle 數(shù)據(jù)庫 XE 上進(jìn)行了測試,這些示例應(yīng)該同樣也可在其他 Oracle 平臺上運行良好。
索引進(jìn)程與搜索
Oracle Text 為可檢索的數(shù)據(jù)項建立索引之后,用戶才能夠通過搜索查找內(nèi)容。編制索引是確保搜索性能的常用方法。Oracle Text 的索引進(jìn)程是根據(jù)管道建模的,在這個管道中,從數(shù)據(jù)存儲檢索來的數(shù)據(jù)項經(jīng)過一系列轉(zhuǎn)換之后,其關(guān)鍵字會添加到索引中。該索引進(jìn)程分為多個階段,每個階段都由一個單獨的實體來處理,并可由應(yīng)用程序開發(fā)人員來配置。
Oracle Text 具有適合不同用途的不同索引類型。對于大型文檔的全文搜索,適合使用 CONTEXT 索引類型。該索引進(jìn)程包括以下幾個階段:
數(shù)據(jù)檢索:只是將數(shù)據(jù)從數(shù)據(jù)存儲(例如 Web 頁面、數(shù)據(jù)庫大型對象或本地文件系統(tǒng))中取出,然后作為數(shù)據(jù)流傳送到下一個階段。
過濾:過濾器負(fù)責(zé)將各種文件格式的數(shù)據(jù)轉(zhuǎn)換為純文本格式。索引管道中的其他組件只能處理純文本數(shù)據(jù),不能識別 Microsoft Word 或 Excel 等文件格式。
分段:分段器添加關(guān)于原始數(shù)據(jù)項結(jié)構(gòu)的元數(shù)據(jù)。
詞法分析:根據(jù)數(shù)據(jù)項的語言將字符流分為幾個字詞。
索引:最后一個階段將關(guān)鍵字添加到實際索引中。
索引構(gòu)建完成后,應(yīng)用程序即可通過普通的 SQL 查詢執(zhí)行最終用戶輸入的搜索。
安裝 Oracle Text
在默認(rèn)情況下,Oracle Text 隨 Oracle 數(shù)據(jù)庫 XE 一起安裝。如何使用的是其他數(shù)據(jù)庫版本,您需要自己安裝 Oracle Text 功能。安裝了此功能后,您只需創(chuàng)建一個普通的數(shù)據(jù)庫用戶,并賦予該用戶 CTXAPP 角色。這樣,用戶即可執(zhí)行特定的索引管理過程:
CREATE USER ot1 IDENTIFIED BY ot1;
GRANT connect,resource, ctxapp TO ot1;
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:IT專家網(wǎng)論壇