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