Re: Najlepsza na swiecie wyszukiwarka pelnotekstowa

Autor: Darius Jack (dariusz_at_usa.net)
Data: Sat 31 Oct 1998 - 14:34:20 MET


> Na podstawie opisow bede prezentowal algorytmy indeksowania,
> wyszukiwania, z najbardziej zaanwansowanymi opcjami.
>
> Jack
Dzisiaj jeszcze o Bazach Unii Europejskiej z grupy CORDIS
wraz z opisem jezyka wyszukiwania w rekordach z polami tekstowymi
(free-text) i polami o typie innym jniz free-text (CCL).

Operatory boolowskie, AND, OR, NOT

Zaczynamy od zindeksowania bazy danych ( bazy rekordow) i tworzymy
indeks wszystkich wyrazow wystepujacych we wszystkich rekordach.

czyli :
slowo id-rekordu w ktorym wystepuje, id-pozycji_slowa_w_rekordzie ,
       id_ktory to wyraz w rekordzie od poczatku rekordu
       kolejny id_rekordu

Gdy utworzylismy taki indeks/y

Prosta operacja find : znajdz WYRAZ - generuje liste identyfikatorow
rekordow, w ktorych slowo z idenksu "WYRAZ" wystepuje, raz lub wiele
razy. Niech to bedzie zbior A

Find KOMPUTER - zbior A indeksow rekordow zawierajacych slowo
                         komputer
Find PC zbior B indeksow rekordow zawierajacych slowo
                        PC

Find KOMPUTER AND PC = iloczyn logiczny zbiorow A x B
Find KOMPUTER OR pc = suma logiczna zbiorow A + B
Find KOMPUTER NOT PC = roznica logiczna zbiorow A - B

Rangowanie wyswietlanych rekordow wedlug czestosci wystepowania slowa .
 =
Rekordy zostaja wyswietlone po posortowaniu wedlug ilosci wystapien
szukanego slowa.

Wyszukiwanie w polach numerycznych i polach daty.

=
>
<
>=
<=

FIND DATA = 1998-10-31 AND KOMPUTER =

znajdz wszystkie rekordy w ktorych wystepuje choc raz slowo KOMPUTER
i w polu DATA data jest dzisiejsza =
iloczyn logiczny zbiorow A = FIND KOMPUTER x B = DATE = 1998-10-31

Wyszukiwanie wyrazow sasiadujacych
Adjacency searching

znak $ jest uzywany do oznaczenia rozdzielenia dwoch szukanych wyrazow
przez jedno lub kilka slow.

FIND GOLD $ CONTACT
zwraca rekordy w ktorych te dwa szukane slowa sa rozdzielone jednym
wyrazem
np.
GOLD PLATED CONTACT

FIND BEST $ $ PRINTER = np. BEST EVER LASER PRINTER

FIND AUTOMATIC $ $ $ SYSTEMS = np. AUTOMATIC UNDERGROUND RAILWAY
SIGNALLING SYSTEMS ( rozdzielenie szukanych slow przez 3 wyrazy).

Jaki algorytm:
Ze zbioru indeksowego :

zbior A = FIND GOLD AND zbior B = FIND CONTACT AND (indeks wyrazu GOLD
w rekordzie jest mniejszy o 2 od indeksu wyrazu CONTACT w tym samym
rekordzie ).

Znak rozdzielenia search terms w rekordzie "."
FIND ACOUSTIC . LINE
zwraca rekordy zaewierajace te dwa search terms oddalone maksymalnie o
jedno slowo od siebie i w tej kolejnosci.
Algorytm, j.w.

A = FIND ACOUSTIC AND B = FIND LINE (rekordy zawierajace te dwa wyrazy)
 = C

C and ( index_LINE - index_ACOUSTIC <=3 ) (czyli 3 - rozdzielone, 2
sasiadujace)

FIND TAPE .. ROUTINE
(maks dwa slowa rozdzielajace) , j.w. tyle, ze

C and ( index_TAPE - index_ROUTINE <= 4 )

FIND CHARACTER ... DIACRITICAL
slowa sa rozdzielone dowolna iloscia wyrazow w tym samym rekordzie, w
dowolnym porzadku
Algorytm:
FIND CHARACTER AND FIND DIACRITICAL

Znak przecinka "," = search terms sa rozdzielone, ale w dowolnym
porzadku

FIND ACOUSTIC , LINE
zwraca rekordy zawierajace te search terms w dowolnym porzadku
Algorytm:

FIND ACOUSTIC AND FIND LINE AND ( /index_ACOUSTIC - index_LINE / = 1

FIND ACOUSTIC , . LINE
zwraca rekordy zawierajace te search terms , w dowolnym porzadku, ale
rozdzielone maksymalnie jednym wyrazem

Algorytm:
FIND ACOUSTIC AND FIND LINE AND ( /index_ACOUSTIC - index_FIND/ <= 2

FIND ACOUSTIC , $ LINE
zwraca rekordy zawierajace oba search terms w dowolnym porzadku, ale
rozdzielone pojedynczym wyrazem.
Algorytm
FIND ACOUSTIC AND FIND LINE AND ( /index_ACOUSTIC - index_FIND/ = 2
{ / / = wartosc bezwzgledna - modul }

Jutro Jezyk zapytan VERITY + moje algorytmy procesu wyszukiwania
rekordow.

Jack

Wkrotce, algorytmy wyszukiwania AltaVisty, Yahoo, Lycosa i wszelkich
innych wyszukiwarek.
Prosze tylko mi przeslac opis jezyka zapytan , a przedstawie w postaci
algorytmow proces wyszukiwania rekordow.

Kazdy algorytm mozna latwo zapisac w Perlu i napisac sobie wlasna
wyszukiwarke pelnotekstowa.

Jack

Jaki algorytm



To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 17:46:39 MET DST