Tekst w bazie danych

Opcja Context do uniwersalnych baz danych Oracle'a pozwala na stworzenie elastycznego systemu przeszukiwania dokumentów.

Opcja Context do uniwersalnych baz danych Oracle'a pozwala na stworzenie elastycznego systemu przeszukiwania dokumentów.

Większość przedsiębiorstw ma już systemy zapewniające szybki dostęp do danych o dobrze sprecyzowanej strukturze, przechowywanych w relacyjnych danych. Powszechnie uważa się, że dane te stanowią jedynie 10-15% zasobów informacyjnych przedsiębiorstwa. Reszta istnieje w postaci dokumentów tekstowych, podręczników, raportów, sprawozdań, faksów, przesyłek poczty elektronicznej i stron z sieci WWW. Dostęp do danych tekstowych nie jest tak łatwy jak do danych strukturalnych.

Firmy potrzebujące stałego, elektronicznego dostępu do obydwu typów danych korzystają z baz danych SQL do zarządzania danymi alfanumerycznymi oraz używają innego systemu do przeszukiwania plików tekstowych, przechowywanych w hierarchicznych strukturach katalogowych na dyskach lub dostępnych w sieci Web. Jednakże takie systemy nie zapewniają najważniejszych właściwości typowych dla systemów zarządzania bazami danych - bezpieczeństwa, sprawdzania integralności danych, transakcyjności. Podwójny system złożony z baz SQL i motoru przeszukiwania tekstowego jest droższy niż rozwiązanie pojedyncze, wymaga specjalizowanych aplikacji koordynujących dane z plików tekstowych i baz danych oraz nie zapewnia możliwości przeszukiwania wszystkich danych za pomocą zapytań SQL.

W kontekście Oracle'a

Uniwersalne bazy danych pozwalają na przechowywanie wielu różnych typów danych, w tym również danych tekstowych. Oracle rozszerza funkcje swoich baz danych za pomocą tzw. kartuszy (cartridge), integralnie połączonych z motorem bazy danych, wykorzystujących możliwości optymalizatora bazy oraz rozszerzających zakres funkcji dostępnych w języku SQL.

Oracle Context to kartusz tekstowy, rozszerzający właściwości funkcjonalne baz Oracle7 i Oracle8, pozwalający na przechowywanie plików tekstowych w rodzimym formacie (np. Word) w relacyjnej bazie danych. Zapewnia również jednolity interfejs dostępu do danych tekstowych: poszukiwanie i pobieranie danych za pomocą zapytań SQL. W jednym zapytaniu SQL można poszukiwać jego danych tekstowych i numerycznych z bazy. Istnieją różne wersje językowe kartusza, dostosowane do składni i semantyki języków narodowych. Nie ma jednak wersji dla języka polskiego.

Tekst można przechowywać w bazie danych na kilka sposobów. Najprostszy polega na zapisywaniu go bezpośrednio w kolumnie tabeli. Elastyczne typy danych (np. pole tekstowe o zmiennej długości lub plik binarny) pozwalają na dostosowanie formatu kolumny do typu tekstu. W jednym polu kolumny tekstowej można zmieścić zarówno nazwisko autora książki, jak i całą wielusetstronicową publikację. Inna metoda przechowywania polega na zapisywaniu w tabelach bazy jedynie odniesienia (wskaźnika) do dokumentów, przechowywanych w katalogach dyskowych lub nawet w sieci Web. W tabeli przechowuje się ścieżkę dostępu do pliku lub adres URL. Ta ostatnia możliwość pozwala na tworzenie systemu obsługi dokumentów w firmowym intranecie, bez potrzeby przenoszenia ich do centralnej lokalizacji.

Indeksowanie dokumentów

Dokumenty zapisywane w kolumnach bazy lub dołączane przez wskaźnik są indeksowane za pomocą motoru przeszukiwania wbudowanego w kartusz ConText. Ponieważ czas indeksowania dużych dokumentów może trwać dość długo, na systemach wieloprocesorowych można równolegle uruchomić wiele motorów indeksowania. Indeks tekstowy ma inny charakter niż indeksy tabel relacyjnych, jest przechowywany w tabelach bazy relacyjnej i dzięki temu jest bezpośrednio dostępny do przeszukiwania. Indeksowanie dotyczy każdego słowa w dokumencie. W bazie przechowuje się informacje o pochodzeniu danego słowa, częstotliwości jego występowania w każdym dokumencie i rodzaju słów sąsiadujących.

W kartusz ConText wbudowano standardowy sposób indeksowania, choć administrator bazy może zmieniać opcje, zależnie od języka dokumentów, sposobu przechowywania i zastosowania.

Rozszerzenia SQL

Podstawowe rozszerzenie języka SQL, zapewniające dostęp do danych tekstowych, to funkcja CONTAINS (zawiera). Można z niej korzystać w zapytaniu SQL, np. poszukując tytułu dokumentów, w których mowa o bankructwie firmy ABCD (nazwa firmy ABCD znajduje się w innej kolumnie niż przeszukiwany tekst).

SELECT tytuł

FROM tab_dokument

WHERE firma = 'ABCD'

AND CONTAINS (tab_dokument.text, 'bankrut') > 0;

Oprócz listy tytułów dokumentów zawierających poszukiwany tekst, funkcja CONTAINS podaje wartość numeryczną, rodzaj oceny, na ile blisko znaleziony dokument jest zgodny z zapytaniem. Wynik numeryczny będzie tym wyższy, im częściej w dokumencie pojawi się poszukiwane słowo. Istnieje również możliwość ustawienia wyników wg malejących (rosnących) wartości numerycznego wyniku poszukiwania (korzystając z SQL-owego polecenia ORDER).

W bardziej skomplikowanych zapytaniach polecenie CONTAINS może pojawić się wielokrotnie, w połączeniu z typowymi zapytaniami SQL, operującymi na strukturalnej części tabeli.

Najważniejszy klient: handel elektroniczny

Kartusz ConText zapewnia możliwość rozszerzenia właściwości funkcjonalnych o poszukiwanie tekstowe w istniejących bazach danych Oracle'a, już zawierających pola tekstowe w dowolnym formacie. Oracle promuje kartusz ConText głównie do zastosowań w handlu elektronicznym, gdzie stworzenie interesujących katalogów produktów, łącznie z krótkimi opisami właściwości lub dokumentacją, nie jest zadaniem trywialnym.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200