{"id":14155,"date":"2020-05-16T22:46:00","date_gmt":"2020-05-16T20:46:00","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/oracle-text-using-and-indexing-the-context-index\/"},"modified":"2020-05-16T22:46:00","modified_gmt":"2020-05-16T20:46:00","slug":"oracle-text-using-and-indexing-the-context-index","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/oracle-text-using-and-indexing-the-context-index\/","title":{"rendered":"Oracle Text : Using and Indexing &#8211; the CONTEXT Index"},"content":{"rendered":"<p>Everybody has already faced performance problem with oracle CLOB columns.<\/p>\n<p>The aim of this blog is to show you (always from a real user case) how to use one of Oracle Text Indexes (CONTEXT index) to solve performance problem with CLOB column.<\/p>\n<p>The oracle text complete documentation is here : <a href=\"https:\/\/docs.oracle.com\/database\/121\/CCAPP\/GUID-1369480A-C348-4C41-9590-D2173A585370.htm#CCAPP9024\">Text Application Developer&#8217;s Guide<\/a><\/p>\n<p>Let&#8217;s start with the following SQL query which take more than 6.18 minutes to execute :<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; set timing on\nSQL&gt; set autotrace traceonly\nSQL&gt; select * from v_sc_case_pat_hist pat_hist where upper(pat_hist.note) LIKE '%FC IV%';\n\n168 rows selected.\n\nElapsed: 00:06:18.09\n\nExecution Plan\n----------------------------------------------------------\nPlan hash value: 1557300260\n\n--------------------------------------------------------------------------------\n---------------------\n\n| Id  | Operation                           | Name          | Rows  | Bytes | Co\nst (%CPU)| Time     |\n\n--------------------------------------------------------------------------------\n---------------------\n\n|   0 | SELECT STATEMENT                    |               |   521 |  9455K| 24\n285   (1)| 00:00:01 |\n\n|   1 |  TABLE ACCESS BY INDEX ROWID BATCHED| DWH_CODE      |     1 |    28 |\n  2   (0)| 00:00:01 |\n\n|*  2 |   INDEX SKIP SCAN                   | PK_DWH_CODE   |     1 |       |\n  1   (0)| 00:00:01 |\n\n|*  3 |  VIEW                               |               |   521 |  9455K| 24\n285   (1)| 00:00:01 |\n\n|*  4 |   TABLE ACCESS FULL                 | CASE_PAT_HIST |   521 |   241K| 24\n283   (1)| 00:00:01 |\n\n--------------------------------------------------------------------------------\n---------------------\n\n\nPredicate Information (identified by operation id):\n---------------------------------------------------\n\n   2 - access(\"DWH_CODE_NAME\"='DWH_PIT_DATE')\n       filter(\"DWH_CODE_NAME\"='DWH_PIT_DATE')\n   3 - filter(\"DWH_VALID_FROM\"&lt;=TO_NUMBER(\"PT\".\"DWH_PIT_DATE\") AND\n              \"DWH_VALID_TO\"&gt;TO_NUMBER(\"PT\".\"DWH_PIT_DATE\"))\n   4 - filter(UPPER(\"NOTE\") LIKE '%FC IV%')\n\nNote\n-----\n   - dynamic statistics used: dynamic sampling (level=2)\n   - 1 Sql Plan Directive used for this statement\n\n\nStatistics\n----------------------------------------------------------\n          0  recursive calls\n          0  db block gets\n     134922  consistent gets\n     106327  physical reads\n        124  redo size\n      94346  bytes sent via SQL*Net to client\n      37657  bytes received via SQL*Net from client\n        338  SQL*Net roundtrips to\/from client\n          0  sorts (memory)\n          0  sorts (disk)\n        168  rows processed\n\nSQL&gt;\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Checking the execution plan, oracle optimizer does a Full Scan to access the table <em>CASE_PAT_HIST<\/em>.<\/p>\n<p>As the the sql function <em>upper(pat_hist.note)<\/em> is used, let&#8217;s try to create a function based index :<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">CREATE INDEX IDX_FBI_I1 ON SCORE.CASE_PAT_HIST (UPPER(note))\n                                                *\nERROR at line 1:\nORA-02327: cannot create index on expression with datatype LOB\n<\/pre>\n<p>&nbsp;<\/p>\n<p>The message is clear, we cannot create an index on a column with dataype LOB.<\/p>\n<p>Moreover :<\/p>\n<ol>\n<li>Even if my column datatype would not be a CLOB, the search criteria <em>LIKE &#8216;%FC IV%&#8217;<\/em>\u00a0 prevent the use of any index since the oracle optimizer has no idea from which letter the string get started, so it will scan the whole table.<\/li>\n<li>Indeed, only the following search criteria will use the index :\n<ol>\n<li>LIKE &#8216;%FC IV&#8217;<\/li>\n<li>LIKE &#8216;FC IV%&#8217;<\/li>\n<li>LIKE &#8216;FC%IV&#8217;<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p>So to improve the performance of my SQL query and to index my CLOB column, the solution is to create an Oracle Text Index :<\/p>\n<p>In Oracle 12.1 release, three different Oracle Text Index exists :<\/p>\n<ul>\n<li>CONTEXT: Suited for indexing collections or large coherent documents.<\/li>\n<li>CTXCAT: Suited for small documents or text fragments.<\/li>\n<li>CTXRULE: Used to build a document classification or routing application.<\/li>\n<\/ul>\n<p>So, let&#8217;s try to create an oracle text index of type CONTEXT :<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; CREATE INDEX IDX_CPH_I3 ON SCORE.CASE_PAT_HIST LOB(note) INDEXTYPE IS CTXSYS.CONTEXT;\n\nIndex created.\n\nElapsed: 00:00:51.76\nSQL&gt; EXEC DBMS_STATS.GATHER_TABLE_STATS('SCORE','CASE_PAT_HIST');\n\nPL\/SQL procedure successfully completed.\n\nElapsed: 00:00:25.20<\/pre>\n<p>&nbsp;<\/p>\n<p>Now we have to change the queries <em>Where Clause <\/em>in order to query it with the CONTAINS operator :<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; SELECT * from v_sc_case_pat_hist pat_hist WHERE CONTAINS(note, '%FC IV%', 1) &gt; 0;\n\n170 rows selected.\n\nElapsed: 00:00:00.82\n\nExecution Plan\n----------------------------------------------------------\nPlan hash value: 768870586\n\n--------------------------------------------------------------------------------\n---------------------\n\n| Id  | Operation                           | Name          | Rows  | Bytes | Co\nst (%CPU)| Time     |\n\n--------------------------------------------------------------------------------\n---------------------\n\n|   0 | SELECT STATEMENT                    |               |  2770 |    49M|  3\n355   (1)| 00:00:01 |\n\n|   1 |  TABLE ACCESS BY INDEX ROWID BATCHED| DWH_CODE      |     1 |    28 |\n  2   (0)| 00:00:01 |\n\n|*  2 |   INDEX SKIP SCAN                   | PK_DWH_CODE   |     1 |       |\n  1   (0)| 00:00:01 |\n\n|*  3 |  VIEW                               |               |  2770 |    49M|  3\n355   (1)| 00:00:01 |\n\n|   4 |   TABLE ACCESS BY INDEX ROWID       | CASE_PAT_HIST |  2770 |  1284K|  3\n353   (1)| 00:00:01 |\n\n|*  5 |    DOMAIN INDEX                     | IDX_CPH_I3    |       |       |\n483   (0)| 00:00:01 |\n\n--------------------------------------------------------------------------------\n---------------------\n\n\nPredicate Information (identified by operation id):\n---------------------------------------------------\n\n   2 - access(\"DWH_CODE_NAME\"='DWH_PIT_DATE')\n       filter(\"DWH_CODE_NAME\"='DWH_PIT_DATE')\n   3 - filter(\"DWH_VALID_FROM\"&lt;=TO_NUMBER(\"PT\".\"DWH_PIT_DATE\") AND\n              \"DWH_VALID_TO\"&gt;TO_NUMBER(\"PT\".\"DWH_PIT_DATE\"))\n   5 - access(\"CTXSYS\".\"CONTAINS\"(\"NOTE\",'%FC IV%',1)&gt;0)\n\nNote\n-----\n   - dynamic statistics used: dynamic sampling (level=2)\n   - 1 Sql Plan Directive used for this statement\n\n\nStatistics\n----------------------------------------------------------\n         59  recursive calls\n          0  db block gets\n       3175  consistent gets\n        417  physical reads\n        176  redo size\n      95406  bytes sent via SQL*Net to client\n      38098  bytes received via SQL*Net from client\n        342  SQL*Net roundtrips to\/from client\n          0  sorts (memory)\n          0  sorts (disk)\n        170  rows processed<\/pre>\n<p>&nbsp;<\/p>\n<p>Now the query is executed in just few millisecond.<\/p>\n<p>By checking the execution plan, we note an access to the table SCORE.CASE_PAT_HIST within a DOMAIN INDEX represented by our Context Index (IDX_CPH_I3).<\/p>\n<p>Now let&#8217;s compare the results given by the LIKE and the CONTAINS operators:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; SELECT count(*) from v_sc_case_pat_hist pat_hist WHERE upper(note) LIKE '%FC IV%'\n  2  UNION ALL\n  3  SELECT count(*) from v_sc_case_pat_hist pat_hist WHERE CONTAINS(note, '%FC IV%', 1) &gt; 1;\n\n  COUNT(*)\n----------\n       168\n       170<\/pre>\n<p>&nbsp;<\/p>\n<p>The CONTAINS clause return 2 rows in more, let&#8217;s checking :<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; select note from v_sc_case_pat_hist pat_hist WHERE CONTAINS(note, '%FC IV%', 1) &gt; 1 and case_id in (1,2);\n\nNOTE\n--------------------------------------------------------------------------------\nText Before , functional class (FC) IV\nText Before , WHO FC-IV<\/pre>\n<p>&nbsp;<\/p>\n<p>For the LIKE clause, the wildcard %FC IV% returns :<\/p>\n<ul>\n<li>Text Before <strong>FC IV<\/strong><\/li>\n<li><strong>FC IV<\/strong> Text After<\/li>\n<li>Text Before <strong>FC IV<\/strong> Text After<\/li>\n<\/ul>\n<p>For the CONTAINS clause, the wildcard %FC IV% returns :<\/p>\n<ul>\n<li>Text Before <strong>FC IV<\/strong><\/li>\n<li><strong>FC IV<\/strong> Text After<\/li>\n<li>Text Before <strong>FC IV<\/strong> Text After<\/li>\n<li>Text Before <strong>FC%IV<\/strong><\/li>\n<li><strong>FC%IV<\/strong> Text After<\/li>\n<li>Text Before <strong>FC%IV<\/strong> Text After<\/li>\n<\/ul>\n<p>So, in term of functionality LIKE and CONTAINS clause are not exactly the same since the former returns less data than the last one.<\/p>\n<p>If we translate the CONTAINS clause in the LIKE clause, we should write : &#8220;LIKE &#8216;%FC%IV%'&#8221;<\/p>\n<p>For my customer case, the CONTAINS clause is correct, the business confirmed me this datas must be returned.<\/p>\n<p>The CONTEXT oracle text index has some limitations :<\/p>\n<ul>\n<li>You cannot using several CONTAINS through the operand OR \/ AND, you will face oracle error &#8220;ORA-29907: found duplicate labels in primary invocations&#8221;<\/li>\n<li>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; SELECT count(*) from v_sc_case_pat_hist pat_hist WHERE CONTAINS(note, '%FC IV%', 1) &gt; 1 or CONTAINS(note, '%FC TZ%', 1) &gt; 1;\nSELECT count(*) from v_sc_case_pat_hist pat_hist WHERE CONTAINS(note, '%FC IV%', 1) &gt; 1 or CONTAINS(note, '%BE TZ%', 1) &gt; 1\n                                                                                           *\nERROR at line 1:\nORA-29907: found duplicate labels in primary invocations<\/pre>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>To solve this issue, let&#8217;s rewrite the SQL through an UNION clause :<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; SELECT count(*) from v_sc_case_pat_hist pat_hist WHERE CONTAINS(note, '%FC IV%', 1) &gt; 1\n  2  UNION\n  3  SELECT count(*) from v_sc_case_pat_hist pat_hist WHERE CONTAINS(note, '%BE TZ%', 1) &gt; 1;\n\n  COUNT(*)\n----------\n       170\n       112<\/pre>\n<p>&nbsp;<\/p>\n<p>Conclusion :<\/p>\n<ul>\n<li>The benefits of a creating Oracle Text Index (CONTEXT index in our case) include fast response time for text queries with the CONTAINS, CATSEARCH and MATCHES Oracle Text operators.We decrease the response tie from 6.18 mins to few milliseconds.<\/li>\n<li>CATSEARCH and MATCHES are respectively the operators used for CTXCAT index and CTXRULE index I will present you in a next blog.<\/li>\n<li>Transparent Data Encryption-enabled column does not support Oracle Text Indexes.<\/li>\n<li>Always check if the data returned by the CONTAINS clause correspond to your business needs.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Everybody has already faced performance problem with oracle CLOB columns. The aim of this blog is to show you (always from a real user case) how to use one of Oracle Text Indexes (CONTEXT index) to solve performance problem with CLOB column. The oracle text complete documentation is here : Text Application Developer&#8217;s Guide Let&#8217;s [&hellip;]<\/p>\n","protected":false},"author":27,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229,368,59],"tags":[],"type_dbi":[],"class_list":["post-14155","post","type-post","status-publish","format-standard","hentry","category-database-administration-monitoring","category-development-performance","category-oracle"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Oracle Text : Using and Indexing - the CONTEXT Index - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/oracle-text-using-and-indexing-the-context-index\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Oracle Text : Using and Indexing - the CONTEXT Index\" \/>\n<meta property=\"og:description\" content=\"Everybody has already faced performance problem with oracle CLOB columns. The aim of this blog is to show you (always from a real user case) how to use one of Oracle Text Indexes (CONTEXT index) to solve performance problem with CLOB column. The oracle text complete documentation is here : Text Application Developer&#8217;s Guide Let&#8217;s [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/oracle-text-using-and-indexing-the-context-index\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-16T20:46:00+00:00\" \/>\n<meta name=\"author\" content=\"Oracle Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Oracle Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-text-using-and-indexing-the-context-index\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-text-using-and-indexing-the-context-index\/\"},\"author\":{\"name\":\"Oracle Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"headline\":\"Oracle Text : Using and Indexing &#8211; the CONTEXT Index\",\"datePublished\":\"2020-05-16T20:46:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-text-using-and-indexing-the-context-index\/\"},\"wordCount\":601,\"commentCount\":0,\"articleSection\":[\"Database Administration &amp; Monitoring\",\"Development &amp; Performance\",\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/oracle-text-using-and-indexing-the-context-index\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-text-using-and-indexing-the-context-index\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/oracle-text-using-and-indexing-the-context-index\/\",\"name\":\"Oracle Text : Using and Indexing - the CONTEXT Index - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2020-05-16T20:46:00+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-text-using-and-indexing-the-context-index\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/oracle-text-using-and-indexing-the-context-index\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-text-using-and-indexing-the-context-index\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Oracle Text : Using and Indexing &#8211; the CONTEXT Index\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\",\"name\":\"Oracle Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"caption\":\"Oracle Team\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Oracle Text : Using and Indexing - the CONTEXT Index - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/oracle-text-using-and-indexing-the-context-index\/","og_locale":"en_US","og_type":"article","og_title":"Oracle Text : Using and Indexing - the CONTEXT Index","og_description":"Everybody has already faced performance problem with oracle CLOB columns. The aim of this blog is to show you (always from a real user case) how to use one of Oracle Text Indexes (CONTEXT index) to solve performance problem with CLOB column. The oracle text complete documentation is here : Text Application Developer&#8217;s Guide Let&#8217;s [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/oracle-text-using-and-indexing-the-context-index\/","og_site_name":"dbi Blog","article_published_time":"2020-05-16T20:46:00+00:00","author":"Oracle Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Oracle Team","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-text-using-and-indexing-the-context-index\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-text-using-and-indexing-the-context-index\/"},"author":{"name":"Oracle Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"headline":"Oracle Text : Using and Indexing &#8211; the CONTEXT Index","datePublished":"2020-05-16T20:46:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-text-using-and-indexing-the-context-index\/"},"wordCount":601,"commentCount":0,"articleSection":["Database Administration &amp; Monitoring","Development &amp; Performance","Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/oracle-text-using-and-indexing-the-context-index\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-text-using-and-indexing-the-context-index\/","url":"https:\/\/www.dbi-services.com\/blog\/oracle-text-using-and-indexing-the-context-index\/","name":"Oracle Text : Using and Indexing - the CONTEXT Index - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2020-05-16T20:46:00+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-text-using-and-indexing-the-context-index\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/oracle-text-using-and-indexing-the-context-index\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-text-using-and-indexing-the-context-index\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Oracle Text : Using and Indexing &#8211; the CONTEXT Index"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee","name":"Oracle Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","caption":"Oracle Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/14155","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/27"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=14155"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/14155\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=14155"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=14155"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=14155"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=14155"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}