{"id":555,"date":"2017-12-03T15:50:28","date_gmt":"2017-12-03T14:50:28","guid":{"rendered":"http:\/\/explainit.pl\/wordpress\/?p=555"},"modified":"2017-12-03T15:52:36","modified_gmt":"2017-12-03T14:52:36","slug":"przeszukiwanie-danych-pelnotekstowych-indeks-oracle-text-typu-ctxsys-context","status":"publish","type":"post","link":"https:\/\/explainit.pl\/wordpress\/2017\/12\/03\/przeszukiwanie-danych-pelnotekstowych-indeks-oracle-text-typu-ctxsys-context\/","title":{"rendered":"Przeszukiwanie danych pe\u0142notekstowych &#8211; indeks Oracle Text typu CTXSYS.CONTEXT"},"content":{"rendered":"<p>Do\u015b\u0107 powszechnym wyzwaniem dla programist\u00f3w jest umo\u017cliwienie u\u017cytkownikom bazy danych efektywnego wyszukiwania informacji w oparciu o cz\u0119\u015bciowe dopasowanie danych tekstowych, np. szukanie produkt\u00f3w zawieraj\u0105cych okre\u015blone s\u0142owo w opisie, szukanie symboli produkt\u00f3w zawieraj\u0105cych okre\u015blony fragment, szukanie dokument\u00f3w tekstowych zawieraj\u0105cych podan\u0105 fraz\u0119, itp. Zwykle zadania takie s\u0105 realizowane za pomoc\u0105 operatora <code>LIKE '%...%'<\/code> lub <code>UPPER(...) LIKE '%...%'<\/code>. Niestety, tradycyjne struktury indeks\u00f3w (B*-drzewo i bitmapowy) s\u0105 w przypadku takich zapyta\u0144 bezsilne, co doprowadza do plan\u00f3w wykonania bazuj\u0105cych na nieefektywnych pe\u0142nych odczytach tabeli.<\/p>\n<p>W celu znalezienia skuteczniejszego rozwi\u0105zania przyjrzyjmy si\u0119 bli\u017cej w\u0142asno\u015bciom ciekawego specjalizowanego typu indeksu s\u0142u\u017c\u0105cego do wsparcia takich w\u0142a\u015bnie cz\u0119\u015bciowych dopasowa\u0144 danych tekstowych &#8211; indeksowi Oracle Text. A dok\u0142adniej m\u00f3wi\u0105c, jednemu z trzech indeks\u00f3w Oracle Text, nazwanego standardowym (CONTEXT). Dwa pozosta\u0142e, mniej popularne typy indeks\u00f3w Oracle Text, nosz\u0105 nazwy: katalogowy (CTXCAT) i klasyfikacyjny (CTXRULE).<\/p>\n<p>Tworzenie indeksu CONTEXT odbywa si\u0119 za pomoc\u0105 polecenia CREATE INDEX wyposa\u017conego w klauzul\u0119 INDEXTYPE:<\/p>\n<p><code>CREATE INDEX poezje_ind ON poezje(tresc) INDEXTYPE IS CTXSYS.CONTEXT;<\/code><\/p>\n<p>Struktura indeksu typu CONTEXT jest fizycznie zapisana w formie czterech tabel: tabeli $I zawieraj\u0105cej pojedyncze wyekstrahowane s\u0142owa , tabeli (IOT) $K odwzorowuj\u0105cej identyfikatory dokument\u00f3w tekstowych na ROWID, tabeli $R o strukturze odwrotnej do $K oraz z tabeli $N zawieraj\u0105cej usuni\u0119te identyfikatory dokument\u00f3w. Ponadto, tabelom $I i $R towarzysz\u0105 indeksy. U\u017cycie indeksu jest transparentne dla u\u017cytkownika, wymaga jednak zast\u0105pienia operatora <code>LIKE<\/code> specjalizowan\u0105 funkcj\u0105 <code>CONTAINS<\/code> (niewra\u017cliwa na wielko\u015b\u0107 znak\u00f3w!), np.:<\/p>\n<p><code>SELECT * FROM poezje WHERE CONTAINS(tresc, 'zdrowie')&gt;0;<\/code><\/p>\n<p>Nale\u017cy zaznaczy\u0107, \u017ce w przeciwie\u0144stwie do klasycznych indeks\u00f3w, indeksy Oracle Text domy\u015blnie nie s\u0105 automatycznie synchronizowane po operacjach DML. Do administratora bazy danych nale\u017cy wykonywanie takiej synchronizacji za pomoc\u0105 procedury <code>CTX_DDL.SYNC_INDEX()<\/code>. Alternatywnie mo\u017cna wymusi\u0107 automatyczne synchronizowanie indeksu w chwili zatwierdzenia transakcji (<code>PARAMETERS ('SYNC (ON COMMIT)')<\/code>). Trzeba o tym pami\u0119ta\u0107, bo w przeciwnym razie wyniki zapyta\u0144 b\u0119d\u0105 niekompletne!<\/p>\n<p>Zademonstrujmy zastosowanie indeksu typu CONTEXT w optymalizacji zapyta\u0144 dokonuj\u0105cych cz\u0119\u015bciowego dopasowania danych tekstowych. Utw\u00f3rzmy: prost\u0105 tabel\u0119 POEZJE z kolumn\u0105 tekstow\u0105 oraz indeks typu CONTEXT (bez automatycznej synchronizacji). Przed utworzeniem indeksu do tabeli POEZJE wstawimy jeden rekord.<\/p>\n<p><code>CREATE TABLE poezje (p_id NUMBER(10) PRIMARY KEY, tresc VARCHAR2(1000));<br \/>\nINSERT INTO poezje VALUES (1, 'Litwo, Ojczyzno moja! ty jestes jak zdrowie');<br \/>\nCREATE INDEX poezje_ind ON poezje(tresc) INDEXTYPE IS CTXSYS.CONTEXT;<\/code><\/p>\n<p>W celach &#8222;poznawczych&#8221; rzu\u0107my okiem na zawarto\u015b\u0107 wygenerowanych tabel $I, $K, $R.<\/p>\n<p><code>SELECT * FROM DR$POEZJE_IND$I;<br \/>\nTOKEN_TEXT\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 TOKEN_TYPE TOKEN_FIRST TOKEN_LAST TOKEN_COUNT TOKEN_INFO<br \/>\n---------------- ---------- ----------- ---------- ----------- ----------<br \/>\nJAK\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1 008806<br \/>\nJESTES\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1 008805<br \/>\nLITWO\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a01 008801<br \/>\nMOJA\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1 008803<br \/>\nOJCZYZNO\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1 008802<br \/>\nTY\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1 008804<br \/>\nZDROWIE\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1 008807<\/p>\n<p>SELECT * FROM DR$POEZJE_IND$I;<br \/>\nDOCID TEXTKEY<br \/>\n----- ------------------<br \/>\n1\u00a0\u00a0\u00a0\u00a0 AAASM9AADAAAP1GAAA<\/p>\n<p>SELECT * FROM DR$POEZJE_IND$R;<br \/>\nROW_NO DATA<br \/>\n------ ----------------------------<br \/>\n0\u00a0\u00a0\u00a0\u00a0\u00a0 00001233D0000C00003F51804141<\/code><\/p>\n<p>Zastosujmy teraz funkcj\u0119 <code>CONTAINS<\/code> w celu wyszukania rekord\u00f3w zawieraj\u0105cych podane s\u0142owo lub fragment s\u0142owa.<\/p>\n<p><code>SELECT * FROM poezje WHERE CONTAINS(tresc, 'zdrowie')&gt;0;<br \/>\nP_ID TRESC<br \/>\n---- --------------------------------------------<br \/>\n1\u00a0\u00a0\u00a0 Litwo, Ojczyzno moja! ty jestes jak zdrowie<\/p>\n<p>SELECT * FROM poezje WHERE CONTAINS(tresc, '%CZY%')&gt;0;<br \/>\nP_ID TRESC<br \/>\n---- -------------------------------------------<br \/>\n1\u00a0\u00a0\u00a0 Litwo, Ojczyzno moja! ty jestes jak zdrowie<\/code><\/p>\n<p>Pami\u0119tajmy, \u017ce domy\u015blnie indeks Oracle Text nie jest automatycznie synchronizowany. Zatem je\u015bli dodamy nowy rekord do tabeli POEZJE, nie zostanie on uwzgl\u0119dniony w indeksie i w wynikach zapytania!<\/p>\n<p><code>INSERT INTO poezje VALUES (2, 'Wplynalem na suchego przestwor oceanu');<br \/>\nCOMMIT;<\/p>\n<p>SELECT * FROM poezje WHERE CONTAINS(tresc, 'OCEANU')&gt;0;<br \/>\nno rows selected<\/p>\n<p>EXEC CTX_DDL.SYNC_INDEX('poezje_ind');<br \/>\nPL\/SQL procedure successfully completed.<\/p>\n<p>SELECT * FROM poezje WHERE CONTAINS(tresc, 'OCEANU')&gt;0;<br \/>\nP_ID TRESC<br \/>\n---- -------------------------------------<br \/>\n2\u00a0\u00a0\u00a0 Wplynalem na suchego przestwor oceanu<\/code><\/p>\n<p>Aby eksperymentalnie wykaza\u0107 u\u017cyteczno\u015b\u0107 indeks\u00f3w Oracle Text wype\u0142nili\u015bmy testow\u0105 tabel\u0119 POEZJE milionem rekord\u00f3w, gdzie w ka\u017cdym rekordzie znajdowa\u0142o si\u0119 losowo wygenerowane zdanie sk\u0142adaj\u0105ce si\u0119 z od 5 do 20 losowo wygenerowanych s\u0142\u00f3w pochodz\u0105cych ze zbioru 500 s\u0142\u00f3w (kod PL\/SQL generuj\u0105cy testow\u0105 tabel\u0119 mo\u017cna pobra\u0107 <a href=\"https:\/\/explainit.pl\/wordpress\/wp-content\/uploads\/2017\/12\/text_generator.txt\">TUTAJ<\/a>). Nast\u0119pnie badali\u015bmy czas odpowiedzi na zapytania przeszukuj\u0105ce tabel\u0119 POEZJE w celu znalezienia rekord\u00f3w zawieraj\u0105cych podane s\u0142owo lub podany fragment s\u0142owa, zar\u00f3wno korzystaj\u0105c z indeksu Oracle Text (funkcja <code>CONTAINS()<\/code>), jak i bez niego (operator <code>LIKE<\/code>).<\/p>\n<p><code>SQL&gt; CREATE INDEX poezje_ind ON poezje(tresc) INDEXTYPE IS CTXSYS.CONTEXT;<br \/>\nIndex created.<br \/>\nElapsed: 00:00:33.34<\/p>\n<p>SQL&gt; SELECT * FROM poezje WHERE CONTAINS(tresc, 'zdrowie')&gt;0;<br \/>\nP_ID TRESC<br \/>\n---- -------------------------------------------<br \/>\n0\u00a0\u00a0\u00a0 Litwo, Ojczyzno moja! ty jestes jak zdrowie<br \/>\nElapsed: 00:00:00.01<\/p>\n<p>SQL&gt; SELECT * FROM poezje WHERE CONTAINS(tresc, '%drowi%')&gt;0;<br \/>\nP_ID TRESC<br \/>\n---- -------------------------------------------<br \/>\n0\u00a0\u00a0\u00a0 Litwo, Ojczyzno moja! ty jestes jak zdrowie<br \/>\nElapsed: 00:00:00.04<\/p>\n<p>SQL&gt; SELECT * FROM poezje WHERE UPPER(tresc) LIKE '%ZDROWIE%';<br \/>\nP_ID TRESC<br \/>\n---- -------------------------------------------<br \/>\n0\u00a0\u00a0\u00a0 Litwo, Ojczyzno moja! ty jestes jak zdrowie<br \/>\nElapsed: 00:00:01.15<\/code><\/p>\n<p>Jak wida\u0107, indeks Oracle Text doskonale przyspiesza wyszukiwanie dokument\u00f3w tekstowych wed\u0142ug pe\u0142nych s\u0142\u00f3w. W przypadku wyszukiwania cz\u0119\u015bciowych dopasowa\u0144, wydajno\u015b\u0107 b\u0119dzie zale\u017cna od ca\u0142kowitej liczby wszystkich wyraz\u00f3w j\u0119zyka (w naszych dokumentach stosowali\u015bmy 500 s\u0142\u00f3w). Warto te\u017c przyjrze\u0107 si\u0119 rozmiarowi indeksu Oracle Text w por\u00f3wnaniu z rozmiarem tabeli z danymi.<\/p>\n<p><code>SQL&gt; SELECT 'ORACLE TEXT INDEX', SUM(bytes)<br \/>\nFROM user_extents<br \/>\nWHERE segment_name LIKE 'DR$POEZJE_IND%'<br \/>\nUNION ALL<br \/>\nSELECT 'TABELA POEZJE', SUM(bytes)<br \/>\nFROM user_extents<br \/>\nWHERE segment_name='POEZJE';<\/p>\n<p>'ORACLETEXTINDEX' SUM(BYTES)<br \/>\n----------------- ----------<br \/>\nORACLE TEXT INDEX\u00a0\u00a0 48758784<br \/>\nTABELA POEZJE\u00a0\u00a0\u00a0\u00a0\u00a0 117440512<\/code><\/p>\n<p>Godna polecenia dokumentacja opisuj\u0105ca indeksy Oracle Text znajduje si\u0119 <a href=\"https:\/\/www.toadworld.com\/platforms\/oracle\/w\/wiki\/11642.oracle-text-index-at-a-glance\">tu (ToadWorld)<\/a> i <a href=\"https:\/\/oracle-base.com\/articles\/9i\/full-text-indexing-using-oracle-text-9i\">tu (Oracle-Base)<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Do\u015b\u0107 powszechnym wyzwaniem dla programist\u00f3w jest umo\u017cliwienie u\u017cytkownikom bazy danych efektywnego wyszukiwania informacji w oparciu o cz\u0119\u015bciowe dopasowanie danych tekstowych, np. szukanie produkt\u00f3w zawieraj\u0105cych okre\u015blone s\u0142owo w opisie, szukanie symboli produkt\u00f3w zawieraj\u0105cych okre\u015blony fragment, szukanie dokument\u00f3w tekstowych zawieraj\u0105cych podan\u0105 fraz\u0119, itp. Zwykle zadania takie s\u0105 realizowane za pomoc\u0105 operatora LIKE '%&#8230;%&#8217; lub UPPER(&#8230;) LIKE '%&#8230;%&#8217;. <a href=\"https:\/\/explainit.pl\/wordpress\/2017\/12\/03\/przeszukiwanie-danych-pelnotekstowych-indeks-oracle-text-typu-ctxsys-context\/\" rel=\"nofollow\"><span class=\"sr-only\">Read more about Przeszukiwanie danych pe\u0142notekstowych &#8211; indeks Oracle Text typu CTXSYS.CONTEXT<\/span>[&hellip;]<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[10,33,21],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.2.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Przeszukiwanie danych pe\u0142notekstowych - indeks Oracle Text typu CTXSYS.CONTEXT - Explain IT<\/title>\n<meta name=\"description\" content=\"Przeszukiwanie danych pe\u0142notekstowych - indeks Oracle Text typu CTXSYS.CONTEXT\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/explainit.pl\/wordpress\/2017\/12\/03\/przeszukiwanie-danych-pelnotekstowych-indeks-oracle-text-typu-ctxsys-context\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Przeszukiwanie danych pe\u0142notekstowych - indeks Oracle Text typu CTXSYS.CONTEXT - Explain IT\" \/>\n<meta property=\"og:description\" content=\"Przeszukiwanie danych pe\u0142notekstowych - indeks Oracle Text typu CTXSYS.CONTEXT\" \/>\n<meta property=\"og:url\" content=\"https:\/\/explainit.pl\/wordpress\/2017\/12\/03\/przeszukiwanie-danych-pelnotekstowych-indeks-oracle-text-typu-ctxsys-context\/\" \/>\n<meta property=\"og:site_name\" content=\"Explain IT\" \/>\n<meta property=\"article:published_time\" content=\"2017-12-03T14:50:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-12-03T14:52:36+00:00\" \/>\n<meta name=\"author\" content=\"Maciej Zakrzewicz\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Napisane przez\" \/>\n\t<meta name=\"twitter:data1\" content=\"Maciej Zakrzewicz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Szacowany czas czytania\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minut\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/explainit.pl\/wordpress\/2017\/12\/03\/przeszukiwanie-danych-pelnotekstowych-indeks-oracle-text-typu-ctxsys-context\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/explainit.pl\/wordpress\/2017\/12\/03\/przeszukiwanie-danych-pelnotekstowych-indeks-oracle-text-typu-ctxsys-context\/\"},\"author\":{\"name\":\"Maciej Zakrzewicz\",\"@id\":\"https:\/\/explainit.pl\/wordpress\/#\/schema\/person\/740773131bc169a2dc9c0e5e07476219\"},\"headline\":\"Przeszukiwanie danych pe\u0142notekstowych &#8211; indeks Oracle Text typu CTXSYS.CONTEXT\",\"datePublished\":\"2017-12-03T14:50:28+00:00\",\"dateModified\":\"2017-12-03T14:52:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/explainit.pl\/wordpress\/2017\/12\/03\/przeszukiwanie-danych-pelnotekstowych-indeks-oracle-text-typu-ctxsys-context\/\"},\"wordCount\":597,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/explainit.pl\/wordpress\/#organization\"},\"keywords\":[\"indeksy\",\"Oracle Text\",\"wydajno\u015b\u0107\"],\"articleSection\":[\"Oracle Database\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/explainit.pl\/wordpress\/2017\/12\/03\/przeszukiwanie-danych-pelnotekstowych-indeks-oracle-text-typu-ctxsys-context\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/explainit.pl\/wordpress\/2017\/12\/03\/przeszukiwanie-danych-pelnotekstowych-indeks-oracle-text-typu-ctxsys-context\/\",\"url\":\"https:\/\/explainit.pl\/wordpress\/2017\/12\/03\/przeszukiwanie-danych-pelnotekstowych-indeks-oracle-text-typu-ctxsys-context\/\",\"name\":\"Przeszukiwanie danych pe\u0142notekstowych - indeks Oracle Text typu CTXSYS.CONTEXT - Explain IT\",\"isPartOf\":{\"@id\":\"https:\/\/explainit.pl\/wordpress\/#website\"},\"datePublished\":\"2017-12-03T14:50:28+00:00\",\"dateModified\":\"2017-12-03T14:52:36+00:00\",\"description\":\"Przeszukiwanie danych pe\u0142notekstowych - indeks Oracle Text typu CTXSYS.CONTEXT\",\"breadcrumb\":{\"@id\":\"https:\/\/explainit.pl\/wordpress\/2017\/12\/03\/przeszukiwanie-danych-pelnotekstowych-indeks-oracle-text-typu-ctxsys-context\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/explainit.pl\/wordpress\/2017\/12\/03\/przeszukiwanie-danych-pelnotekstowych-indeks-oracle-text-typu-ctxsys-context\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/explainit.pl\/wordpress\/2017\/12\/03\/przeszukiwanie-danych-pelnotekstowych-indeks-oracle-text-typu-ctxsys-context\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/explainit.pl\/wordpress\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Przeszukiwanie danych pe\u0142notekstowych &#8211; indeks Oracle Text typu CTXSYS.CONTEXT\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/explainit.pl\/wordpress\/#website\",\"url\":\"https:\/\/explainit.pl\/wordpress\/\",\"name\":\"Explain IT\",\"description\":\"Autorska pracownia doradztwa i szkole\u0144 IT - Maciej Zakrzewicz - szkolenia, ekspertyzy, wdro\u017cenia. Technologie Oracle, PostgreSQL, MySQL.\",\"publisher\":{\"@id\":\"https:\/\/explainit.pl\/wordpress\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/explainit.pl\/wordpress\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/explainit.pl\/wordpress\/#organization\",\"name\":\"Explain IT\",\"url\":\"https:\/\/explainit.pl\/wordpress\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/explainit.pl\/wordpress\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/explainit.pl\/wordpress\/wp-content\/uploads\/2016\/08\/explainITmini.png\",\"contentUrl\":\"https:\/\/explainit.pl\/wordpress\/wp-content\/uploads\/2016\/08\/explainITmini.png\",\"width\":196,\"height\":64,\"caption\":\"Explain IT\"},\"image\":{\"@id\":\"https:\/\/explainit.pl\/wordpress\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/explainit.pl\/wordpress\/#\/schema\/person\/740773131bc169a2dc9c0e5e07476219\",\"name\":\"Maciej Zakrzewicz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/explainit.pl\/wordpress\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9c98d020128b142a480aa35a22300a69?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9c98d020128b142a480aa35a22300a69?s=96&d=mm&r=g\",\"caption\":\"Maciej Zakrzewicz\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Przeszukiwanie danych pe\u0142notekstowych - indeks Oracle Text typu CTXSYS.CONTEXT - Explain IT","description":"Przeszukiwanie danych pe\u0142notekstowych - indeks Oracle Text typu CTXSYS.CONTEXT","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:\/\/explainit.pl\/wordpress\/2017\/12\/03\/przeszukiwanie-danych-pelnotekstowych-indeks-oracle-text-typu-ctxsys-context\/","og_locale":"pl_PL","og_type":"article","og_title":"Przeszukiwanie danych pe\u0142notekstowych - indeks Oracle Text typu CTXSYS.CONTEXT - Explain IT","og_description":"Przeszukiwanie danych pe\u0142notekstowych - indeks Oracle Text typu CTXSYS.CONTEXT","og_url":"https:\/\/explainit.pl\/wordpress\/2017\/12\/03\/przeszukiwanie-danych-pelnotekstowych-indeks-oracle-text-typu-ctxsys-context\/","og_site_name":"Explain IT","article_published_time":"2017-12-03T14:50:28+00:00","article_modified_time":"2017-12-03T14:52:36+00:00","author":"Maciej Zakrzewicz","twitter_card":"summary_large_image","twitter_misc":{"Napisane przez":"Maciej Zakrzewicz","Szacowany czas czytania":"5 minut"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/explainit.pl\/wordpress\/2017\/12\/03\/przeszukiwanie-danych-pelnotekstowych-indeks-oracle-text-typu-ctxsys-context\/#article","isPartOf":{"@id":"https:\/\/explainit.pl\/wordpress\/2017\/12\/03\/przeszukiwanie-danych-pelnotekstowych-indeks-oracle-text-typu-ctxsys-context\/"},"author":{"name":"Maciej Zakrzewicz","@id":"https:\/\/explainit.pl\/wordpress\/#\/schema\/person\/740773131bc169a2dc9c0e5e07476219"},"headline":"Przeszukiwanie danych pe\u0142notekstowych &#8211; indeks Oracle Text typu CTXSYS.CONTEXT","datePublished":"2017-12-03T14:50:28+00:00","dateModified":"2017-12-03T14:52:36+00:00","mainEntityOfPage":{"@id":"https:\/\/explainit.pl\/wordpress\/2017\/12\/03\/przeszukiwanie-danych-pelnotekstowych-indeks-oracle-text-typu-ctxsys-context\/"},"wordCount":597,"commentCount":0,"publisher":{"@id":"https:\/\/explainit.pl\/wordpress\/#organization"},"keywords":["indeksy","Oracle Text","wydajno\u015b\u0107"],"articleSection":["Oracle Database"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/explainit.pl\/wordpress\/2017\/12\/03\/przeszukiwanie-danych-pelnotekstowych-indeks-oracle-text-typu-ctxsys-context\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/explainit.pl\/wordpress\/2017\/12\/03\/przeszukiwanie-danych-pelnotekstowych-indeks-oracle-text-typu-ctxsys-context\/","url":"https:\/\/explainit.pl\/wordpress\/2017\/12\/03\/przeszukiwanie-danych-pelnotekstowych-indeks-oracle-text-typu-ctxsys-context\/","name":"Przeszukiwanie danych pe\u0142notekstowych - indeks Oracle Text typu CTXSYS.CONTEXT - Explain IT","isPartOf":{"@id":"https:\/\/explainit.pl\/wordpress\/#website"},"datePublished":"2017-12-03T14:50:28+00:00","dateModified":"2017-12-03T14:52:36+00:00","description":"Przeszukiwanie danych pe\u0142notekstowych - indeks Oracle Text typu CTXSYS.CONTEXT","breadcrumb":{"@id":"https:\/\/explainit.pl\/wordpress\/2017\/12\/03\/przeszukiwanie-danych-pelnotekstowych-indeks-oracle-text-typu-ctxsys-context\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/explainit.pl\/wordpress\/2017\/12\/03\/przeszukiwanie-danych-pelnotekstowych-indeks-oracle-text-typu-ctxsys-context\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/explainit.pl\/wordpress\/2017\/12\/03\/przeszukiwanie-danych-pelnotekstowych-indeks-oracle-text-typu-ctxsys-context\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/explainit.pl\/wordpress\/"},{"@type":"ListItem","position":2,"name":"Przeszukiwanie danych pe\u0142notekstowych &#8211; indeks Oracle Text typu CTXSYS.CONTEXT"}]},{"@type":"WebSite","@id":"https:\/\/explainit.pl\/wordpress\/#website","url":"https:\/\/explainit.pl\/wordpress\/","name":"Explain IT","description":"Autorska pracownia doradztwa i szkole\u0144 IT - Maciej Zakrzewicz - szkolenia, ekspertyzy, wdro\u017cenia. Technologie Oracle, PostgreSQL, MySQL.","publisher":{"@id":"https:\/\/explainit.pl\/wordpress\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/explainit.pl\/wordpress\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/explainit.pl\/wordpress\/#organization","name":"Explain IT","url":"https:\/\/explainit.pl\/wordpress\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/explainit.pl\/wordpress\/#\/schema\/logo\/image\/","url":"https:\/\/explainit.pl\/wordpress\/wp-content\/uploads\/2016\/08\/explainITmini.png","contentUrl":"https:\/\/explainit.pl\/wordpress\/wp-content\/uploads\/2016\/08\/explainITmini.png","width":196,"height":64,"caption":"Explain IT"},"image":{"@id":"https:\/\/explainit.pl\/wordpress\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/explainit.pl\/wordpress\/#\/schema\/person\/740773131bc169a2dc9c0e5e07476219","name":"Maciej Zakrzewicz","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/explainit.pl\/wordpress\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/9c98d020128b142a480aa35a22300a69?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9c98d020128b142a480aa35a22300a69?s=96&d=mm&r=g","caption":"Maciej Zakrzewicz"}}]}},"_links":{"self":[{"href":"https:\/\/explainit.pl\/wordpress\/wp-json\/wp\/v2\/posts\/555"}],"collection":[{"href":"https:\/\/explainit.pl\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/explainit.pl\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/explainit.pl\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/explainit.pl\/wordpress\/wp-json\/wp\/v2\/comments?post=555"}],"version-history":[{"count":13,"href":"https:\/\/explainit.pl\/wordpress\/wp-json\/wp\/v2\/posts\/555\/revisions"}],"predecessor-version":[{"id":569,"href":"https:\/\/explainit.pl\/wordpress\/wp-json\/wp\/v2\/posts\/555\/revisions\/569"}],"wp:attachment":[{"href":"https:\/\/explainit.pl\/wordpress\/wp-json\/wp\/v2\/media?parent=555"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/explainit.pl\/wordpress\/wp-json\/wp\/v2\/categories?post=555"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/explainit.pl\/wordpress\/wp-json\/wp\/v2\/tags?post=555"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}