




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Oracle全文索引 寶成國際集團 中山電腦部 內容簡介 全文索引CONTAINS的安裝 全文索引CONTAINS的用法 全文索引CONTAINS的安裝 安裝db時 選擇intermedia手工安裝 Oracle9i 1 建表空間 createtablespaceoratext2 建用戶ctxsys SYS ctx admin dr0csystestoratexttemp3 建對象 ctxsys ctx admin dr0inst ctx lib libctxx9 so ctx admin defaults drdefus sqlOracle10g SYS ctx admin catctx sqlctxsystbs drsystempunlock CTXSYS ctx admin defaults drdefel sql 全文索引CONTAINS的用法 全文檢索 Oracle從7 3開始支援全文檢索 即用戶可以使用Oracle伺服器的上下文 ConText 選項完成基於文本的查詢 具體可以採用萬用字元查找 模糊匹配 相關分類 近似查找 條件加權和詞意擴充等方法 在Oracle8 0 x中稱為ConTextcartridge 在Oracle8i中稱為interMediaText Oracle9i中稱為OracleText应用领域 搜索文本 需要快捷有效搜索文本資料的應用程式管理多種文檔 允許搜索各種混和文檔格式的應用程式 包括ord excel lotus等從多種資料來源中檢索文本 不僅來自Oracle資料庫中的文本資料 而且可以來自Internet和檔案系統的文本資料 150種 搜索XML應用程式 全文索引CONTAINS的用法 一般做法 使用標準的INSTR函數和LIKE操作符實現 適合搜索僅跨越很小的表的時候SELECT FROMmytextWHEREINSTR thetext Oracle 0 SELECT FROMmytextWHEREthetextLIKE Oracle OracleText 可以回答如 在存在單詞 Oracle 的行同時存在單詞 Corporation 而且兩單詞間距不超過10個單詞的文本 查詢含有單詞 Oracle 或者單詞 california 的文本 並且將結果按準確度進行排序 含有詞根train的文本 全文索引CONTAINS的用法 權限 需要对某一文本列有创建B树索引的权限 查询用户 索引用户 表拥有者可以是不同的用户 临时表空间要求 建立OracleText索引需要消耗CTXSYS用户默认的临时表空间空间 如果空间不够的话将导致ORA 01652错误 你可以扩展CTXSYS的临时表空间 而不是发出命令的用户默认的临时表空间 对于索引全英文的文本列来说 需要临时表空间大小通常是其文本数据量的50 200 不等 而对索引包含中文文本列来说需要的表空间会更多 全文索引CONTAINS的用法 設置 1 檢查資料庫中是否有CTXSYS使用者和CTXAPP腳色 如果沒有這個使用者和角色 意味著你的資料庫創建時未安裝intermedia功能 你必須修改資料庫以安裝這項功能 OracleText为系统管理员提供CTXSYS用户 为应用程序开发人员提供CTXAPP角色 CTXSYS用户可执行以下任务 启动OracleText服务器 执行CTXAPP角色的所有任务 具有CTXAPP角色的用户可执行以下任务 创建索引 管理OracleText数据字典 包括创建和删除首选项 进行OracleText查询 使用OracleTextPL SQL程序包 2 檢查伺服器是否有對PLSExtProc服務的監聽 授權 oracle全文檢索需要ctxsys使用者的支援 其實主要是需要使用ctxsys使用者下的ctx ddl這個包 這個包中絕大部分過程的創建都與全文檢索有關 grantexecuteonctx ddltotestuser 全文索引CONTAINS的用法 分析器 basic lexer 只能根據空格 標點 回車符來進行拆分 比如 中國重慶 只能拆分為 中國重慶 一個片語chinese vgram lexer 專門的漢語分析器 按字單元進行拆分 比如 中國重慶 可以拆分為 中 中國 國重 重慶 慶 五個片語 這種方式的好處是能夠將所有有可能的片語全部保存進索引表 使得資料不會遺漏 chinese lexer 一種新的漢語分析器 能夠認識大部分常用的漢語詞彙 並按常用詞彙進行拆分存儲 比如 中國重慶 只會被拆分為 中國 重慶 兩個片語 創建分析器 execctx ddl create preference my lexer chinese lexer 全文索引CONTAINS的用法 过滤詞組 建索引的時候 通常需要對一些常用的詞組進行過濾 比如對公司名稱進行檢索時 肯定不希望輸入 有限公司 公司 等關鍵字時 也會有搜索結果 execctx ddl create stoplist my stoplist 自訂需要過濾的詞組ctx ddl add stopword my stoplist 有限公司 移除過濾的詞組ctx ddl move stopword my stoplist 有限公司 全文索引CONTAINS的用法 建TEXT索引 在文本列上建立索引 被稱為域索引 domainindex 即將文本打碎分成很多記號 token 這些記號通常是用空格分開的一個個單詞 OracleText應用的實現實際上就是一個資料裝載 索引資料 執行檢索的一個過程 注意的是 索引欄位不能為nvarchar2類型 並且這個表的主鍵也不能為nvarchar2型 否則無法創建索引 CREATEINDEX schema indexon schema table column INDEXTYPEISctxsys context ONLINE LOCAL PARTITION partition PARAMETERS paramstring PARTITION partition PARAMETERS paramstring PARAMETERS paramstring PARALLELn UNUSABLE 如 createindexYU TEST INDEXonYU TEST name indextypeisCTXSYS CONTEXTparameters lexermy lexerstoplistmy stoplist Parameters 不指明默認第一種分析器 全文索引CONTAINS的用法 索引類型 四種索引類型 CONTEXT CTXCAT CTXRULE CTXXPATH CONTEXT索引 索引優化和同步 需要修改YU TEST表中的資料 比如添加 刪除 更新等操作時 YU TEST INDEX索引是不會同步更新資料的 需要我們在程式中手動的更新 可以寫一個oracle的觸發器 當添加 刪除 修改操作時 進行索引更新 也可以定時進行更新索引同步 execctx ddl sync index yu test index 索引優化 execctx ddl optimize index yu test index full CONTEXT索引 索引查詢 1 查同時有oracle和Corporation 且兩者間距不超過10個單詞SELECTidFROMmytextWHEREcontains thetext near Oracle Corporation 10 02 查询含有单词 Oracle 或者单词 california 的文本 并且将结果按准确度进行排序SELECTscore 1 idFROMmytextWHEREcontains thetext Oracleorcalifornia 1 0ORDERBYscore 1 DESC3 查含有词根train的文本 含有train或think的 train靠近think hu開頭 多態查詢 table和tables字樣 SELECTidFROMmytextWHEREcontains thetext train 0 SELECTidFROMmytextWHEREcontains thetext train OR think SELECTidFROMmytextWHEREcontains thetext trainNEARthink SELECTidFROMmytextWHEREcontains thetext hu SELECTidFROMmytextWHEREcontains thetext FORMSOF INFLECTIONAL table 備注 score表示得分 越高查的數據越精確 全文索引進階 数据库用创建和插入这些索引的方法叫做索引管道 indexPipeline 根据不同的参数构建索引 可以应用于很多实际环境 全文索引CONTAINS的用法 建立索引时 系统默认文档存储在数据库的文本列中 如果不显示的指定索引参数 系统会自动探测文本语言 数据类型和文档格式 系统默认 1 文本存储在数据库中 可以是CLOB BLOB BFILE VARCHAR2 orCHAR类型的文本数据 2 文本列语言是数据库建立时的默认的字符集 3 使用数据库默认的终止目录stoplist stoplist记录存在于文本列中但不对其索引的词 4 允许模糊查询 CONTEXT索引 CONTEXT索引當你的文本是由大的 連續的文本組成時 可以使用該索引建立文本檢索應用程式 你能為不同格式的檔建立索引 如MSWord HTML或純文字 你可以以不同方式自訂索引 該類型索引在基表上執行DML後要求CTX DDL SYNC INDEX 支持的preferences和parameters除了INDEXSET 支持所有的CREATEINDEXpreferences和parameters 這些支援的參數包括索引分區子句 indexpartitionclause 格式 format 字元集 charset 和語言列 languagecolumns 支援所有的文本服務和查詢服務 支援分區文本表的索引 支援CREATEINDEX的FILTERBY和ORDERBY子句 也可以索引結構化列值 更有效地處理混合查詢 索引建好之後 系統中會自動產生以下幾個表 假設索引名為myindex DR myindex I DR myindex K DR myindex R DR myindex N其中以I表最重要 保存表中索引欄位被拆分後的詞組 Dml操作後 context索引不會自動同步 需要利用ctx ddl sync index手工同步索引 CTXCAT索引 Ctxcat可以利用indexset建立一個索引集 把一些經常與ctxcat查詢組合使用的查詢列添加到索引集中 比如你在查詢一個商品名時 還需要查詢生產日期 價格 描述等 你可以將這些列添加到索引集中 oracle將這些查詢封裝到catsearch操作中 從而提高全文索引的效率 任何的Dml操作後 Ctxcat的索引會自動進行同步 不需要手工去執行 與ctxcat索引相對應的查詢操作符是catsearch 支持的preferences和parameters INDEXSET LEXER STOPLIST STORAGEWORDLIST 僅prefix index屬性支援日語資料 不支援格式 Format 字元集 charset 和語言列 不支援表和索引分區 該索引較大 並且創建時間比CONTEXT長 CTXCAT索引的大小與文本總量大小 索引集中的索引數量和索引列的數量有關 在向索引集添加索引前 仔細考慮你的查詢和資源 CTXCAT索引不支援表和索引分區 文本服務 高亮 標記 主題和概要 或查詢服務 解釋 查詢回饋和流覽詞 語法 Catsearch schema column Text queryvarchar2 Structured queryvarchar2 Returnnumber CTXRULE索引 使用CTXRULE索引來建立檔分類或路由應用程式 該索引在一個查詢表上建立 查詢定義分類或路由標準 支持的preferences和parameters 如果使用SVM CLASSIFIER分類器 那麼你可以使用BASIC LEXER CHINESE LEXER JAPANESE LEXER 或KOREAN MORPH LEXER分詞器 如果不使用SVM CLASSIFIER 那只能為你的查詢集使用BASIC LEXER分詞器 更多關於Oracle文本分詞器和分類器 Filter memory datastore 和 no populate參數不適合CTXRULE索引 CREATEINDEX子句支援在查詢上創建索引 萬用字元支持在查詢集上進行模糊操作用CTXRULE索引進行查詢類似於那些使用CONTAINS的查詢 支持片語 doghouse 以及下面CONTAINS運算子 ABOUT AND NEAR NOT OR STEM WITHIN和THESAURUS 支援節分組 使用MATCHES運算子分類文檔 也支援欄位節 然而 CTXRULE不直接支持欄位的查詢 必須在一個CONTEXT查詢上使用查詢重寫 CTXXPATH索引 當你需要在XMLType列上加速existsNode 時 創建這類索引 支持的preferences和parameters STORAGE查詢運算子 existsNode 這類索引將會棄用 只是為了與之前版本的Oracle資料庫向後相容 之前版的Oracle的XMLIndex索引不可用 如果你正在建立一個新的應用程式 那麼 Oracle建議你使用XMLIndex索引 該索引只能創建在XMLType列 儘管該索引對existsNode 查詢很有用 但對於XML搜索並不需要 索引分類小結 一個Oracle文本索引是一個Oracle資料庫域索引 若要建立查詢應用程式 你可以創建一個文本和結構化資料列相混合的CONTEXT索引 並用CONTAINS運算子查詢 你可以從一個文本表創建索引 在一個查詢應用程式中 這個表必須包含文本或指向文本存儲位置的指標 文本通常是檔的集合 但也可以是小的文本片段 為了讓混合查詢獲得更好地性能 你可以用FILTERBY和 或ORDERBY子句指定關系列 創建一個CONTEXT索引 查詢該索引得用CONTAINS運算子 當你的應用程式嚴重依賴混合查詢 基於相關標準 如日期或價格 來搜索小檔或描述性文本片段 可以使用CTXCAT索引 查詢該索引使用CATSEARCH運營商 索引分類小結 若通過使用 簡單或基於規則分類 來建立一個文檔分類應用程式 這需要創建CTXRULE索引 該索引使用MATCHES運算子歸類純文字 HTML或XML文檔 在你索引的文本表中 存儲你定義的查詢集 如果您正在使用XMLType列 那麼創建XMLIndex索引 以加快帶existsNode 查詢速度 使用標準SQL 創建一個文本索引作為對Oracle資料庫一類可擴展的索引 也就說 Oracle文本索引運算子與Oracle資料庫索引類似 它有一個可被引用的名稱 可以用標準SQL語句操作 創建Oracle文本索引的好處是 加快用帶CONTAINS CATSEARCH 和MATCHESOracle文本運算子進行文字查詢的回應速度 這些運算子分別用來查詢CONTEXT CTXCAT和CTXRULE索引 注意 因為透明資料加密不支援域索引 因此不能使用Oracle文本 全文索引參數 索引參數 一 DataStore指明你的文本是如何存储的 系统默认文档储存在数据库内的文本列 CHAR VARCHAR VARCHAR2 BLOB CLOB BFILE orXMLType 中 DataStore对象在由过滤器处理之前从数据库中的列摘录文本 要索引的文档可以来自多种数据源 資料檢索負責將資料從資料存儲 例如web頁面 資料庫大型物件或本地檔案系統 中取出 然後作為資料流程傳送到下一個階段 全文索引參 索引參數 一 DataStoreDatastore包含的類型有 1 DIRECT DATASTORE檢索表 資料存儲在單列中 支援存儲資料庫中的資料 單列查詢 沒有attributes屬性支援類型 char varchar varchar2 blob clob bfile orxmltype 全文索引參 索引參數 一 DataStore2 MULTI COLUMN DATASTORE檢索表 資料存儲在多列中 適用於索引資料分佈在多個列中thecolumnlistislimitedto500bytes支援number和date類型 在索引之前會先轉化成texttrawandblobcolumnsaredirectlyconcatenatedasbinarydata 不支持long longraw nchar andnclob nestedtable對於多列的全文索引可以建立在任意一列上 但是 在查詢時指定的列必須與索引時指定的列保持一致 只有索引指定的列發生修改 oracle才會認為被索引資料發生了變化 僅修改其他列而沒有修改索引列 即使同步索引也不會將修改同步到索引中 全文索引參 索引參數 一 DataStore3 DETAIL DATASTORE適用于主從表查詢 因為真正被索引的是從表上的列 選擇主表的那個列作為索引並不重要 但是選定之後 查詢條件中就必須指明這個列主表中的被索引列的內容並沒有包含在索引中binarySpecifyTRUEforOracleTexttoaddnonewlinecharacteraftereachdetailrow SpecifyFALSEforOracleTexttoaddanewlinecharacter n aftereachdetailRowautomatically detail table从表detail key从表外键detail linenoSpecifythenameofthedetailtablesequencecolumn detail text从表索引列如果更新了子表中的索引列 必須要去更新主表索引列來使oracle認識到被索引資料發生變化 這個可以通過觸發器來實現 全文索引參 索引參數 一 DataStore4 FILE DATASTORE檢索本地作業系統上的文檔多個路徑標識 Unix下冒號分隔開如path1 path2 pathnWindows下用分號 分隔開Oracle只支援在file datastore中設置的路徑中進行搜索 不支援指定路徑的子目錄 如 opt tmp log 如果檔發生了變化 只能是通過修改索引列的方式來通知oracle 被索引資料已經發生了變化 全文索引參 索引參數 一 DataStore5 NESTED DATASTORE檢索巢狀表格6 URL DATASTORE檢索Internet上的資訊 資料庫中只需要存儲相應的url就可以7 USER DATASTOREDocumentsaresynthesizedatindextimebyauser definedstoredprocedure 全文索引CONTAINS的用法 查找某个单词是否存在这两个列之一1 在兩列上建兩個ConText索引SELECT FROMempWHEREcontains ename biti 0ORcontains address biti 0 2 定制CREATETABLEmc idNUMBERPRIMARYKEY NAMEVARCHAR2 10 addressVARCHAR2 80
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 银行行政考试题库及答案
- 银行消防试题及答案
- 河南旅游专业试题及答案
- 医学转专业试题及答案
- 销售专业试题及答案英语
- 印刷专业试题及答案
- 湖北省孝感市2025-2026学年高二上学期9月起点考试地理(B)试卷(含答案)
- 翼载荷和推重比的确定课件
- 河北省廊坊市2024-2025学年八年级上学期11月月考物理试卷(含答案)
- 坡道太高用什么施工方案
- 2025年公证员助理招聘考试题库及模拟题答案
- 初二入团考试内容及答案
- 针灸科感控知识培训课件
- 微生物学讲课文档
- 2025年湖北省武汉市中考物理试卷(含答案与解析)
- 汽车维修工国家职业资格二级技能试题(附答案)
- 文创市集限定摊位协议
- 2025版旅游景区导游及服务人员派遣合同模板
- 2025年中国癌症筛查及早诊早治指南(试行)
- 人教鄂教版(2024)科学一年级上册每课教学反思
- 川教版(三起)(2024)三年级上册英语全册教案
评论
0/150
提交评论