ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

【DB笔试面试555】在Oracle中,全文索引的作用是什么?

2021-04-15 07:08:37  阅读:295  来源: 互联网

标签:INDEX 555 全文索引 DB LHR DOCS Oracle XT


watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

         题目         部分

在Oracle中,全文索引的作用是什么?


     
         答案部分          


Oracle全文索引使Oracle具备了强大的文本检索能力和智能化的文本管理能力。Oracle将全文检索功能做为内置功能提供给用户,使得用户在创建数据库实例时自动安装全文检索。

要使用Oracle全文索引,必须具有CTXAPP角色或者是CTXSYS用户。Oracle全文索引为系统管理员提供CTXSYS用户,为应用程序开发人员提供CTXAPP角色。具有CTXAPP角色的用户可以使用全文索引。全文索引适合于在一些大字段类型中查找匹配关键字,例如搜索引擎(谷歌、百度)常会用到。

下面给出一个使用全文索引的示例:

首先给LHR用户赋予CTAXPP角色:

1LHR@orclasm > GRANT CTXAPP TO LHR;
2Grant succeeded.
3LHR@orclasm > SELECT * FROM USER_ROLE_PRIVS D WHERE D.GRANTED_ROLE='CTXAPP';
4USERNAME                       GRANTED_ROLE                   ADM DEF OS_
5------------------------------ ------------------------------ --- --- ---
6LHR                            CTXAPP                         NO  YES NO
     


设置词法分析器:

1EXEC CTX_DDL.DROP_PREFERENCE('enlexerlhr');
2EXEC CTX_DDL.CREATE_PREFERENCE('enlexerlhr','basic_lexer');
     

常用的词法分析器有3种,①basic_lexer是英文词法;②chiese_vgram_lexer是专门的汉语分析器,支持所有汉字字符集,包括GB231280、ZHS16GBK、UTF8等;③chinese_lexer是一个新的汉语分析器,只支持UTF8字符集。

创建表并创建全文索引:

1CREATE TABLE XT_DOCS_LHR (ID NUMBER PRIMARY KEY, TEXT VARCHAR2(80));
2INSERT INTO XT_DOCS_LHR VALUES (1,'the first doc');
3INSERT INTO XT_DOCS_LHR VALUES (2,'the second doc');
4INSERT INTO XT_DOCS_LHR VALUES (3,'the third doc');
5COMMIT;
     


创建索引,指定INDEXTYPE为CTXSYS.CONTEXT:

 1LHR@orclasm > CREATE INDEX DOC_INDEX_LHR ON XT_DOCS_LHR(TEXT) INDEXTYPE IS CTXSYS.CONTEXT;
2Index created.
3LHR@orclasm > SELECT * FROM XT_DOCS_LHR WHERE CONTAINS(TEXT, 'first') > 0;
4        ID TEXT
5---------- -----------------------
6         1 the first doc
7Execution Plan
8----------------------------------------------------------
9Plan hash value: 4244292504
10---------------------------------------------------------------------------------------------
11| Id  | Operation                   | Name          | Rows  | Bytes | Cost (%CPU)| Time     |
12---------------------------------------------------------------------------------------------
13|   0 | SELECT STATEMENT            |               |     1 |    67 |     4   (0)| 00:00:01 |
14|   1 |  TABLE ACCESS BY INDEX ROWID| XT_DOCS_LHR   |     1 |    67 |     4   (0)| 00:00:01 |
15|*  2 |   DOMAIN INDEX              | DOC_INDEX_LHR |       |       |     4   (0)| 00:00:01 |
16---------------------------------------------------------------------------------------------
17Predicate Information (identified by operation id):
18---------------------------------------------------
19   2 - access("CTXSYS"."CONTAINS"("TEXT",'first')>0)
20Note
21-----
22   - dynamic sampling used for this statement (level=2)
23Statistics
24----------------------------------------------------------
25        137  recursive calls
26          0  db block gets
27        386  consistent gets
28          0  physical reads
29          0  redo size
30        604  bytes sent via SQL*Net to client
31        519  bytes received via SQL*Net from client
32          2  SQL*Net roundtrips to/from client
33          0  sorts (memory)
34          0  sorts (disk)
35          1  rows processed
36LHR@orclasm >   SELECT D.INDEX_NAME, D.INDEX_TYPE, D.ITYP_OWNER, D.ITYP_NAME,D.DOMIDX_STATUS
37  2      FROM DBA_INDEXES D
38  3     WHERE D.INDEX_NAME LIKE 'DOC_INDEX_LHR%';
39INDEX_NAME        INDEX_TYPE    ITYP_OWNER    ITYP_NAME    DOMIDX_STATU
40----------------- ------------- ------------- ------------ ------------
41DOC_INDEX_LHR     DOMAIN        CTXSYS        CONTEXT      VALID
     


可以看到查询中使用到了全文索引。当然,Oracle的全文索引远比这个例子复杂,想深入学习Oracle全文索引的读者可以参考Oracle官方文档。

& 说明:

有关全文索引的更多内容可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2139034/


本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。



watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=      

---------------优质麦课------------

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

 详细内容可以添加麦老师微信或QQ私聊。


watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


About Me:小麦苗      

● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用

● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/

● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

● QQ:646634621  QQ群:618766405

● 提供OCP、OCM和高可用部分最实用的技能培训

● 题目解答若有不当之处,还望各位朋友批评指正,共同进步

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=DBA宝典

长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=喜欢就点击“好看”吧



本文分享自微信公众号 - DB宝(lhrdba)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

标签:INDEX,555,全文索引,DB,LHR,DOCS,Oracle,XT
来源: https://blog.51cto.com/lhrbest/2706970

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有