|
Программирование >> Oracle
interMedia 1277 SQL> select id 2 from mynews 3 where catsearch(news text, Oracle, null) > 0 4 and date created < sysdate ID 1 SQL> select id 2 from mynews 3 where catsearch(news text, Oracle, date created < sysdate) > 0 Здесь мы видим оба метода поиска строк, содержащих слово Oracle в тексте сообщения, дата внесения которого, DATE CREATED, предшествует текущему дню. Первый запрос сначала использует interMedia для поиска всех строк, которые могут удовлетворять запросу, а затем просматривает их в поисках тех, у которых значение DATE CREATED меньше, чем SYSDATE. Второй, более эффективный запрос, будет использовать индекс interMedia, включающий столбец DATE CREATED, для поиска только тех строк, которые одновременно удовлетворяют критерию поиска текста и условию DATE CREATED < SYSDATE. При поиске по индексу-каталогу вместо оператора CONTAINS используется оператор CATSEARCH. Поскольку ранее б1л создан набор индексирования, содержащий столбец DATE CREATED, стало возможным задать структурированное условие запроса непосредственно в операторе CATSEARCH. С помощью этой информации сервер Oracle может очень эффективно проверить оба условия запроса. На условия, которые можно указывать в операторе CATSEARCH, налагается ряд ограничений, в частности поддерживаются только логические операторы AND, OR и NOT, но для множества приложений этот индекс не только подходит, но и является оп-тимальн1м. Возможные ошибки Общаясь с разработчиками приложений и клиентами, использующими компонент interMedia Text, я постоянно слышу об одном и том же небольшом наборе проблем. Эти проблемы рассматриваются в данном разделе. Устаревший индекс Часто ко мне обращались с вопросом, почему часть информации проиндексирована, но недавно добавленные строки индексом не учитываются. Чаще всего причина этого в том, что индекс interMedia Text не синхронизирован. Выполнив запрос к представлению CTX USER PENDING, легко определить, есть ли отложенные изменения, ожи- 1278 Глава 17 дающие индексирования. Если есть, синхронизируйте индекс с помощью одного из описанных ранее методов. Еще одна типичная причина отсутствия информации в индексе связана с ошибками, особенно в процессе фильтрования. При попытке индексирования документов с помощью фильтров Inso, если формат документа не поддерживается, возникают ошибки, и соответствующий документ не индексируется. В представлении CTX USER INDEX ERRORS можно найти достаточно информации, чтобы в1яснить причины возникновения проблем при индексировании. Ошибки внешней процедуры В версии компонента interMedia Text, поставлявшейся в составе СУБД Oracle 8.1.5 и 8.1.6, фильтрование текста выполнялось с помощью фильтров Inso, подключаем1х через внешние процедуры. Внешние процедуры - это написанные на языке С функции, хранящиеся в разделяемой библиотеке и вызываемые из PL/SQL. Эти внешние процедуры работают в отдельном адресном пространстве, а не в адресном пространстве сервера Oracle. Если необходимо фильтровать документы с помощью компонента interMedia Text, но поддержка внешних процедур не сконфигурирована на сервере надлежащим образом, возможно получение одного или нескольких сообщений об ошибках*: ORA-29855: error occurred in the execution of ODCIINDEXCREATE routine ORA-29855: возникла ошибка при выполнении ограмм! ODCIINDEXCREATE ORA-2 0 000: interMedia text error: DRG-50704: Net8 listener is not running or cannot start external procedures ORA-28575: unable to open RPC connection to external procedure agent ORA-2 8 57 5 : невозможно открыть соединение RPC с агентом внешней оце/ры Исчерпывающую информацию о конфигурировании сервера для поддержки внешних процедур можно найти в руководстве Net8Administrators Guide, но вот очень простой и быстрый способ проверить, работают ли внешние процедуры. Организовав с сервера баз: данных (или из окна командной строки, если сервер работает на платформе Microsoft Windows) сеанс telnet, выполните команду tnsping extproc connection data. Если в результате вы не получите ответ ОК, как показано ниже: oracle8i@cmh:/> tnsping extproc connection data TNS Ping Utility for Solaris: Version 8.1.7.0.0 - Production on 30-MAR- 2001 13:46:59 (c) Copyright 1997 Oracle Corporation. All rights reserved. Attempting to contact (ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)) OK (100 msec) значит, поддержка внешних процедур сконфигурирована неправильно. * Представлены также тексты сообщений об ошибках, выдаваемые на русском языке сервером Oracle 8.1.6.0.0. -Прим. научн. ред. interMedia 1279 Внешние процедуры не нужны для фильтрования с помощью interMedia Text в версии Oracle 8.1.7. Процесс фильтрования теперь поддерживается самим сервером. Дальнейшее развитие С выходом Oracle 9i название компонента interMedia Text снова изменилось - теперь соответствующий компонент называется Oracle Text. Все функциональные возможности, которые были в версиях interMedia Text для Oracle 8i, будут поддерживаться и в Oracle Text, но в версию Oracle 9i добавлен ряд новых полезных возможностей. Одной из наиболее желательных возможностей для компонента interMedia Text была автоматическая классификация документов по содержанию. Компонент interMedia Text давал разработчику приложений все необходимые средства для тематического анализа и создания резюме документов, на основе которых можно было их классифицировать. В Oracle Text возможность классификации документов просто встроена. Она помогает создавать системы, позволяющие определить, каким запросам будет соответствовать документ. В компоненте Oracle Text также расширена встроенная поддержка XML-документов. Крроме собственно содержимого, в XML-документ входят структурированные метадан-н1е. Между элементами XML-документа имеются неявные взаимосвязи, и для выражения этих взаимосвязей можно использовать структурированные метаданные. Спецификация XPath, рекомендованная консорциумом W3C (http: www.w3.org/TR/xpath), предлагает способ получения элементов XML-документа на основе содержимого и относительной структуры этих элементов. Компонент Oracle Text включает новый оператор ХРАТН, позволяющий создавать SQL-запросы на основе структурных элементов документа. Это лишь некоторые из нов1х возможностей, появившихся в компоненте interMedia Text/Oracle Text с выходом сервера версии Oracle 9i. Резюме В этой главе мы рассмотрели богатый набор функциональных возможностей компонента interMedia Text, а также способы их использования в разнообразных приложениях. Хотя в этой главе описаны многие особенности и средства interMedia Text, гораздо больше осталось за рамками обсуждения. Можно использовать тезаурус, задавать специализированный лексический анализатор, генерировать HTML-представление для всех документов, независимо от их исходного формата, сохранять запросы для дальнейшего использования и даже создавать собственные списки стоп-слов. Компонент interMedia Text - обширная тема для обсуждения, его невозможно описать в одной главе. Наряду с богатством возможностей компонент interMedia Text отличается простой использования и понятностью. После прочтения этой главы у вас должно сложиться четкое понимание того, как реализован компонент interMedia Text и как его использовать в приложениях.
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |