Oracle Text簡介
Oracle Text為查詢應用程式和文件分類應用程式中的文字提供索引,單詞和主題搜尋以及檢視功能。
要設計Oracle Text應用程式,首先確定期望執行的查詢型別。 知道型別後,就可以為任務選擇最合適的索引。
Oracle Text用於以下類別的應用程式:
- Document Collection Applications
- Catalog Information Applications
- Document Classification Applications
- XML Search Applications
1.文件集合應用程式
文字查詢應用程式使使用者可以搜尋文件集合,例如網站,數字圖書館或文件倉庫。
1.1關於
文件集合應用集合
該集合通常是靜態的,並且在初始索引執行之後,內容沒有明顯變化。 文件可以是任何大小和格式,例如HTML,PDF或Microsoft Word。 這些文件儲存在文件表中。 通過首先為文件集合建立索引來啟用搜尋。
查詢通常由單詞或短語組成。 應用程式使用者使用OR和AND等運算子指定單詞和短語的邏輯組合。 使用者可以應用其他查詢操作來改善搜尋結果,例如詞幹,鄰近搜尋和萬用字元。
對於這種型別的應用程式,應該檢索與查詢最相關的文件。 文件必須在結果列表中排在高位。
查詢最好與文件表上的CONTEXT索引一起使用。 為了查詢該索引,應用程式在SELECT語句的WHERE子句中使用SQL CONTAINS運算子。
1.2文字查詢應用程式流程圖
文件集合上的典型文字查詢應用程式使使用者可以輸入查詢。 該應用程式輸入CONTAINS查詢,並返回滿足查詢條件的文件列表(稱為命中列表)。 結果通常按相關性排名。 該應用程式使使用者可以檢視命中列表中的一個或多個文件。
例如,一個應用程式可能會索引Web上的URL(HTML檔案)並在整個索引URL中提供查詢功能。 查詢應用程式返回的命中列表由使用者可以訪問的URL組成。
下圖展示了使用者與簡單文字查詢應用程式進行互動的流程圖:
- 1)使用者輸入查詢
- 2)該應用程式執行CONTAINS查詢
- 3)應用程式將顯示一個命中列表
- 4)使用者從命中列表中選擇文件
-
5)該應用程式將文件呈現給使用者以供檢視
2.目錄資訊應用程式
目錄資訊由庫存型別資訊組成,例如線上書店或拍賣網站。
2.1關於目錄資訊應用程式
儲存的目錄資訊由文字資訊(例如書名)和相關結構化資訊(例如價格)組成。 通常會定期更新資訊,以使線上目錄與庫存保持最新。
查詢通常是文字元件和結構化元件的組合。 結果幾乎總是按結構化組成部分排序,例如日期或價格。 良好的響應時間始終是此類查詢應用程式的重要因素。
CTXCAT索引可以最好地服務Catalog應用程式。 在SELECT語句的WHERE子句中使用CATSEARCH運算子查詢此索引。
2.2目錄查詢應用程式流程圖
目錄應用程式使使用者可以搜尋目錄中的特定專案。 例如,線上商店應用程式使使用者可以搜尋和購買庫存中的物品。 通常,使用者查詢由一個文字元件組成,該元件在文字描述以及一些其他訂購條件(例如價格或日期)中進行搜尋。
下圖說明了線上電子商店的目錄查詢應用程式的流程圖:
- 1)使用者輸入一個查詢,該查詢由文字元件(例如CD播放器)和結構化元件(例如按價格訂購)組成。
- 2)該應用程式執行CATSEARCH查詢。
- 3)該應用程式顯示相應的排序結果。
- 4)使用者瀏覽結果。
- 5)使用者輸入另一個查詢或執行操作,例如購買商品。
3.文件分類應用程式
在文件分類應用程式中,將輸入流或一組文件與一組預定義規則進行比較。 如果文件符合一個或多個規則,則應用程式將執行一項操作。
例如,假設有新聞報導傳入。 定義一個規則來表示“財務”類別。 該規則本質上是一個或多個查詢,用於選擇有關財務主題的文件。 該規則可能具有“股票或債券或收益”的形式。
當文件到達華爾街收入預測並滿足該類別的規則時,應用程式將採取措施,例如將文件標記為財務或向一個或多個使用者傳送電子郵件。
要建立文件分類應用程式,請建立一個規則表,然後建立一個CTXRULE索引。 要對輸入的文字流進行分類,請在SELECT語句的WHERE子句中使用MATCHES運算子。
4.XML搜尋應用程式
XML搜尋應用程式對XML文件執行搜尋。 常規文件搜尋通常會搜尋一組文件,以返回滿足文字謂詞的文件。 XML搜尋通常使用XML文件的結構來限制搜尋。 通常,僅返回滿足搜尋條件的文件部分。 例如,使用者可能只需要註釋欄位包含電力的採購訂單,而不是查詢包含單詞"電力"的所有采購訂單。
4.1具有XML搜尋應用程式的CONTAINS運算子
CONTAINS運算子非常適合結構化搜尋,可以使用WITHIN,HASPATH和INPATH運算子執行限制性搜尋。 如果使用CONTEXT索引,那麼還可以受益於Oracle Text搜尋的以下特徵:
- 基於令牌的空格標準化搜尋
- 命中列表按相關性排名
- 區分大小寫的搜尋
- 章節搜尋
- 語言功能,例如詞幹和模糊搜尋
- 針對大型文件集的效能優化查詢
注意:如果手動解除安裝Oracle Text,則刪除DBMS_XDBT軟體包。 如果手動安裝Oracle Text,則建立DBMS_XDBT軟體包。從Oracle Database 12c開始,當安裝新的Oracle資料庫軟體或進行升級時,將自動安裝Oracle XML資料庫(XML DB)。
4.2將Oracle文字功能與Oracle XML DB(XML Search Index)相結合
當請想要對應用程式進行全文檢索時,結合使用Oracle Text和Oracle XML DB的功能來建立XML搜尋索引。 在這種情況下,通過輸入諸如"查詢包含單詞Pentium的所有節點"之類的查詢來利用XML結構。 Oracle Database 12c通過新增對XQuery全文擴充套件的支援,擴充套件了Oracle對W3C XQuery規範的支援。 通過此支援,可以對儲存在資料庫中的XML內容執行支援XML的全文搜尋。
4.2.1使用xml_enable方法獲取XML Search Index
XML Search Index是啟用XML的Oracle文字索引(CTXSYS.CONTEXT)。 該索引型別在一個統一索引中支援資訊檢索搜尋和結構化搜尋。XML Search Index還在Oracle文字表中內部儲存了二進位制持久文件物件模型(PDOM),因此可以在二進位制PDOM上對XML操作進行功能評估。 XMLTYPE資料儲存支援此XML搜尋索引。 在存在這樣的XML搜尋索引的情況下,XMLEXISTS被無縫地重寫為CONTAINS查詢。
建立XML Search Index時,將在Oracle Text內部表中實現XML文件的Binary PDOM。 來自Oracle Text索引的後期評估被重定向為與儲存在此內部表中的PDOM背道而馳。
建立XML Search Index:
exec CTX_DDL.CREATE_SECTION_GROUP('secgroup','PATH_SECTION_GROUP'); exec CTX_DDL.SET_SEC_GRP_ATTR('secgroup','xml_enable','t'); CREATE INDEX po_ctx_idx on T(X) indextype is ctxsys.context parameters ('section group SECGROUP');
4.2.2使用Text-on-XML方法
使用Oracle Text,可以在包含XML資料的列上建立CONTEXT索引。 列型別可以是XMLType或任何受支援的型別,只要對XML資料使用正確的索引首選項。
使用XML上的文字方法,使用標準的CONTAINS查詢並新增結構化約束,以將搜尋範圍限制為特定部分,欄位,標記或屬性。 即,指定文字運算子內部的結構,例如WITHIN,HASPATH和INPATH。
例如,設定的CONTEXT索引以使用XML文件建立章節。 考慮以下定義purchase order的XML文件:
<?xml version="1.0"?> <PURCHASEORDER pono="1"> <PNAME>Po_1</PNAME> <CUSTNAME>John</CUSTNAME> <SHIPADDR> <STREET>1033 Main Street</STREET> <CITY>Sunnyvalue</CITY> <STATE>CA</STATE> </SHIPADDR> <ITEMS> <ITEM> <ITEM_NAME> Dell Computer </ITEM_NAME> <DESC> Pentium 2.0 Ghz 500MB RAM </DESC> </ITEM> <ITEM> <ITEM_NAME> Norelco R100 </ITEM_NAME> <DESC>Electric Razor </DESC> </ITEM> </ITEMS> </PURCHASEORDER>
--要在ITEM描述部分中查詢所有包含Pentium的purchase order,請使用WITHIN運算子: SELECT id from po_tab where CONTAINS( doc, 'Pentium WITHIN DESC') > 0; --使用INPATH運算子可以使用XPATH表示式指定更復雜的條件: SELECT id from po_tab where CONTAINS(doc, 'Pentium INPATH (/PURCHASEORDER/ITEMS/ITEM/DESC') > 0;
4.2.3索引JSON資料
JavaScript Object Notation(JSON)是一種獨立於語言的資料格式,用於序列化結構化資料並通過網路(通常在伺服器和Web應用程式之間)交換該資料。 JSON提供了一種基於文字的方式來表示JavaScript物件文字,陣列和標量資料。
create table t1 (txn_date date, po CLOB, constraint c1 check (po is json)); create search index idx on t1(po) for JSON parameters('DATAGUIDE ON sync (on commit)');
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31355629/viewspace-2699315/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- .Text中的TrackBack功能簡介
- text-overflow擷取字串簡單介紹字串
- Oracle:srvctl 簡介Oracle
- Oracle:PGA 簡介Oracle
- Oracle程式簡介Oracle
- Oracle MTS簡介Oracle
- 《兩款編輯器:Atom和Sublime Text簡介》
- Oracle PSU 簡介Oracle
- Oracle Data Guard簡介Oracle
- Oracle:RAC 程式簡介Oracle
- ORACLE監聽簡介Oracle
- Oracle約束簡介Oracle
- Oracle NOSQL DATABASE簡介OracleSQLDatabase
- oracle“SQL Trace”簡介OracleSQL
- 簡介oracle檢視Oracle
- jQuery的text()、html()和val()函式用法簡單介紹jQueryHTML函式
- ORACLE TEXT(轉)Oracle
- Oracle PL/SQL塊簡介OracleSQL
- 2.5.1. Oracle net簡介Oracle
- Oracle的service功能簡介Oracle
- oracle驗證方式簡介Oracle
- ORACLE temp表的簡介Oracle
- oracle lob 簡單介紹Oracle
- oracle ovm deploycluster工具簡介Oracle
- OFS(Oracle Fail Safe)簡介OracleAI
- 轉載:Oracle RAC簡介Oracle
- oracle資料字典簡介Oracle
- Oracle基礎工具簡介Oracle
- oracle Export and Import 簡介(轉)OracleExportImport
- Oracle鎖簡單介紹Oracle
- ORACLE 鎖簡單介紹Oracle
- Oracle Scheduler(1)用法簡介Oracle
- ORACLE字符集簡介Oracle
- Sublime Text 簡明教程
- Oracle OCP(50):審計簡介Oracle
- Oracle RAC簡介與要點Oracle
- Oracle:容器資料庫簡介Oracle資料庫
- 【Oracle】lsnrctl reload 命令簡介Oracle