1 / 33

Oracle Text

Oracle Text. Алберт ШАХУГЯН CNsys PLC. Еволюция. Oracle 7.3 ConText Option Появява се за първи път Oracle 8.0 ConText Cartidge Изисква допълнителени лицензи Oracle 8.1.5 InterMedia Text Влиза в пакета InterMedia Вече се използват домейн индекси. Еволюция. Oracle 8.1.6 interMedia Text

salome
Download Presentation

Oracle Text

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Oracle Text Алберт ШАХУГЯНCNsys PLC

  2. Еволюция • Oracle 7.3 ConText Option • Появява се за първи път • Oracle 8.0 ConText Cartidge • Изисква допълнителени лицензи • Oracle 8.1.5 InterMedia Text • Влиза в пакета InterMedia • Вече се използват домейн индекси

  3. Еволюция • Oracle 8.1.6 interMedia Text • Не са необходими допълнителни лицензи • Oracle 8.1.7 interMedia Text • Добавен е нов тип индекс CTXCAT • Oracle 9.0.1Oracle Text • Добавен е нов тип индекс CTXRULE

  4. Необходимост от домейн индекси • Информация която не е структурирана, намираща се във LONG и LOB полета • Атрибути на съхраняваната информация - collections of objects • Специфична информация която се изчислява по даден начин от данните във таблицата.

  5. Съставни части на домейн индексите • Задължителни • ODCI Index Интерфейс • Оператори • Indextypes • Опционални • ODCI Statistics Interface

  6. ODCI Index Интерфейс • Index Definition methods • ODCIIndexCreate • ODCIIndexAlter • ODCIIndexTruncate • ODCIIndexDrop • Index Maintenance methods • ODCIIndexInsert • ODCIIndexUpdate • ODCIIndexDelete

  7. ODCI Index Интерфейс • Index Scan methods • ODCIIndexStart • ODCIIndexFetch • ODCIIndexClose • Index Metadata method • ODCIIndexGetMetadata

  8. Оператори • Без контекст клауза се дефинира съответствие между параметрите и функциите • С помоща на WITH INDEX CONTEXT, SCAN CONTEXTсе дефинират два допълнителни параметъра на оператора които се ползват при работа с домейн индекси

  9. Indextypes • Създаването на INDEXTYPE е последната задължителна стъпка при дефинирането на домейн индекс тип. • Указва се набора от оператори които ще работят с този тип индекс и методите за извличане на данни от вътрешните структури на индекса.

  10. Дефиниране на методите CREATE TYPE DomainIndexMethods ( FUNCTION ODCIIndexCreate(...) RETURN NUMBER, ... ); CREATE TYPE BODY DomainIndexMethods ( ... );

  11. Дефиниране на оператор CREATE FUNCTION TextContains (Text IN VARCHAR2, Key IN VARCHAR2, indexctx IN ODCIIndexCtx, scanctx IN OUT TextIndexMethods, scanflg IN NUMBER) RETURN NUMBER AS BEGIN ... END TextContains; CREATE OPERATOR Contains BINDING (VARCHAR2, VARCHAR2) RETURN NUMBER WITH INDEX CONTEXT, SCAN CONTEXT TextIndexMethods USING TextContains;

  12. Дефиниране на Indextype CREATE INDEXTYPE TextIndexType FOR Contains (VARCHAR2, VARCHAR2) USING TextIndexMethods;

  13. Създаване на домейн индекс CREATE INDEX i_test_ctx ON test_table(text) INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS ('');

  14. Стастистики за CBO • ODCIStats интерфейс • ODCIStatsCollect • ODCIStatsDelete • ODCIStatsSelectivity • ODCIStatsFunctionCost • ODCIStatsIndexCost • ASSOCIATE STATISTICS WITH ... USING…

  15. Oracle Text Архитектура

  16. Datastore

  17. Filter

  18. Sectioner

  19. Lexer • Разделя текстовия поток на думи(tokens) според езика • Анализира текста спрямо указаният тематичен речник и подава думите (tokens) за индексиране

  20. Indexing Engine • Обработва информацията от лексера и секционирането и я записва в индексите • Използва списъка със stopwords за да премахне често срещаните и неинформативни думи • Използва wordlist за да определи: • Кой stemmer ще се използва за извличатне корените на думите • Параметри за fuzzy функцията • Параметри за prefix индексирането • Максимален брой думи при wildcard expansion

  21. Oracle TextIndex • Набор от таблици в които се съхранява информацията извлечена при процеса на индексиране • Структурата на таблиците се различава за различните видове индекси

  22. CONTEXT Индекси • Предимства • Богат набор от функции за търсене • Размерът на индекса е съизмерим с размерът на индексираният текст • Недостатъци • Не са транзакционни • Необходимо е да се оптимизират

  23. Поддръжка на кирлица • Препоръчителна версия на Oracle Server • Oracle 8.1.7.3.0 • има известни проблеми с INSO_FILTER • Oracle 9.0.1.3.0 • Ограничения • Не работят някои функции • SOUNDEX, STEM

  24. Създаване на индекс CREATE INDEX i_text_ctx ON news(text) INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS ('FILTER CTXSYS.NULL_FILTER SECTION GROUP CTXSYS.HTML_SECTION_GROUP');

  25. Най-често използвани оператори за търсене

  26. Примерни низове за търсене вестници | списания компют% | (персонал_% &компют%)*3 цветя & вази ~ сушени умни & (бързи, смели, сръчни) near ((бази, данни), 3, TRUE) (индексиране & текст) WITHINtitle (индексиране & текст) WITHINPARAGRAPH (индексиране & текст) WITHINSENTENCE

  27. Търсене във индекса SELECT text, score(1) score FROM news WHERE contains(text, 'Толкин', 1) > 0 ORDER BY score DESC

  28. CTXCAT Индекси • Предимства • Позволяват добавянето на структурирана клауза при търсене • Тразакционниса • Не се фрагментират • Недостатъци • Могат да надхвърлят 5-10 пъти размера на индексираните данни • По-бавно се създават • Опростен набор от операции за търсене

  29. Работа с index set В ctx_ddl се намират следните процедури: create_index_set(set_name) add_index(set_name, column_list) remove_index(set_name, column_list) drop_index_set(set_name)

  30. Създаване на индекса begin ctx_ddl.create_index_set('item_set'); ctx_ddl.add_index('item_set', 'price'); end; CREATE INDEX i_items_cat ON items(name) INDEXTYPE IS CTXSYS.CTXCAT PARAMETERS ('INDEX SET item_set');

  31. Логически оператори за търсене в индекса

  32. Търсене в индекса SELECT name, price FROM items WHERE catsearch(name, 'книги', 'price < 500 order by price') > 0

  33. CTXRULE Индекси • Използват се за категоризиране на текстове • Работят само с колони от тип VARCHAR2 и CLOB • Използват таблица с предефинирани низове за търсене

More Related