Bezpłatne indeksy

Lucene to zestaw narzędziowy do przeszukiwania plików tekstowych. Jest dostępny bezpłatnie.

Lucene to zestaw narzędziowy do przeszukiwania plików tekstowych. Jest dostępny bezpłatnie.

Na stronachhttp://www.lucene.com znajduje się bezpłatny zestaw narzędziowy, pozwalający na włączenie do programów Java potężnego motoru Lucene, służącego do przeszukiwania dokumentów tekstowych, witryn Web, tworzenia indeksów. Wprawdzie na razie dostępna jest tylko wstępna wersja tego narzędzia, ale już teraz programiści mogą zapoznać się z wieloma interesującymi funkcjami Lucene.

Motor do Javy

Lucene jest projektowany tak, by można go było użyć do łatwego włączenia do różnego typu aplikacji napisanych w Javie. Może to być archiwum poczty elektronicznej, czytnik dokumentacji technicznej czy prawnej. Można go będzie również wykorzystać jako dodatek do przeglądarek internetowych, pozwalający na indeksowanie odwiedzanych stron i stworzenie archiwum odniesień do stron w sieci. Ponadto Lucene ma służyć do opracowania archiwum dokumentów tekstowych, przeszukiwanych według określonej zawartości z możliwością kontroli wersji.

Oczywiście wszystkie te funkcje można realizować za pomocą komercyjnych motorów przeszukiwania, ale na ogół są one kosztowne (od kilku do kilkunastu tysięcy dolarów). Poza tym kod źródłowy komercyjnych narzędzi nie jest publicznie dostępny. Natomiast dostępność kodu Lucene powoduje, że doświadczeni programiści mogą dowolnie rozwijać możliwości programu.

Jak działa motor

Większość motorów przeszukiwania plików tekstowych posługuje się indeksem w formie odwróconego B-drzewa, pozwalającego na łatwe dodawanie nowych słów oraz mającego niewielkie wymagania co do liczby operacji pobierania informacji z indeksu (jest ona proporcjonalna do logarytmu naturalnego z rozmiaru indeksu). Zwykle indeks ma postać pary kolumn "słowo-identyfikator dokumentu" i jest posortowany według słów lub obydwu kolumn.

Douglas Cutting (wcześniej pracował nad motorem przeszukiwania V-Twin dla systemu operacyjnego Copland firmy Apple), twórca Lucene, zastosował nieco inną metodę tworzenia indeksu dokumentów. Lucene tworzy liczne subindeksy - każdy nowy dokument daje początek nowemu subindeksowi - i okresowo łączy je w większy indeks. Umożliwia to szybkie przeszukiwanie dokumentów istniejących bez blokowania indeksu przy wpisywaniu nowych danych. Częstość łączenia subindeksów daje programiście możliwość zdecydowania co jest ważniejsze: szybkie wyszukiwanie czy dodawanie nowych dokumentów.

Indeksy Lucene są przechowywane w trzech plikach płaskich, zamiast w formie B-drzewa. Słownik główny zawiera wszystkie wyrazy, które pojawiają się w dokumentach, oraz odniesienia do pliku identyfikatorów dokumentów, w których dane słowo występuje. Drugi plik to indeks słownika, zawierający odniesienie do początku każdej setki wyrazów słownika głównego.

Jak wybierać?

Na rynku "otwartego kodu" istnieje kilka motorów przeszukiwania tekstowego: Swish-E, Glimpse, libibex, freeWAIS oraz iSearch. Podobnie jak wiele innych programów, każdy z motorów jest zoptymalizowany do pewnych zastosowań. Wybierając motor przeszukiwania, warto rozważyć następujące cechy:

Indeksowanie inkrementalne czy wsadowe. Po jednorazowym indeksowaniu wsadowym zbioru dokumentów, dodanie kolejnego może być trudne, gdyż wymaga czasochłonnego przetworzenia na nowo całego zbioru. Lucene posługuje się głównie metodą inkrementalną, choć może także pracować w trybie wsadowym.

Źródła danych. Wiele motorów indeksuje tylko strony Web, utrudniając indeksowanie np. plików skompresowanych. Lucene oddziela źródło dokumentów od ich typu, ale wymaga stworzenia specjalizowanego adaptera (czytnika) określonego typu dokumentów.

Formaty plików. Popularne motory operują na czystych plikach tekstowych lub dokumentach HTML. Lucene oferuje mechanizm filtrowania zawartości tekstowej od formatu.

Struktura dokumentu. Lucene pozwala określić pola dokumentu (streszczenie, autor, tekst główny), co upraszcza przeszukiwanie przez ograniczenie zakresu.

Słowa pospolite. Słowa, takie jak "jest", ma", "nie" czy "i" nie, powinny znaleźć się w indeksie. W Lucene można je określić za pomocą oddzielnej klasy StopAnalyzer i wyłączyć z indeksowania.

Fleksje. Zapytanie o słowo "krzesło" powinno wskazać dokumenty zawierające również: "krzesła" czy "krzeseł". (Problem znajdowania fleksyjnych form słów jest znacznie trudniejszy w języku polskim niż w angielskim.)

Zapytania. Wiele motorów oferuje operacje logiczne w zapytaniu (Kowalski AND Nowak), bliskość słów w tekście (Mafia NEAR narkotyk) czy kolejność (motor FOLLOWED BY dohc). Lucene również udostępnia te opcje.

Współbieżność. Czy wielu użytkowników może jednocześnie przeszukiwać bazę dokumentów oraz czy można jednocześnie dodawać dokumenty do bazy? Lucene działa transakcyjnie na indeksach: możliwa jest jedna operacja dodawania do indeksu i wiele przeszukiwań.

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

TOP 200