Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

firebird, pole blob txt i wyszukiwanie

63 views
Skip to first unread message

Rajmund Wrotek

unread,
Oct 27, 2009, 5:27:27 AM10/27/09
to
Witam serdecznie.

Od jakiego� czasu zmagam si� z tematem wyszukiwania w�r�d rekord�w
zawierajacycych du�e partie tekstu.
Mam baz� FB. W jednej z tabel jest pole blob (tekstowe) do kt�rego mam
za�adowany zwyk�y tekst. Tego tekstu jest kilka stron. Takich rekord�w mam
ok. 10 ty�.
Chcia�bym zrealizowa� wyszukiwanie rekord�w w tabeli po podaniu fragmentu
wyst�pujacego w tek�cie z pola blob. Obecnie robi� to poprzez odpowiednei
zapytanie SELECT i WHERE, jednak to rozwi�zanie staje si� coraz wolniejsze
(w miar� przybywania rekord�w w tabeli).

Czy jest jaka� alternatywa dla takiego wyszukiwania w bazie?

Nie pragn� gotowca - w celach edykacyjnych wystarczy nakierowanie mnie na
odpowiedni� droge.

Licz� na pomoc.


wloochacz

unread,
Oct 27, 2009, 5:55:06 AM10/27/09
to
Rajmund Wrotek pisze:
/ciach/

> Liczďż˝ na pomoc.
Zacznij od archiwum - by�o o tym w tym miesi�cu...
A jak jesteďż˝ aďż˝ tak leniwy, to zapytaj google - np. tak:
Full Text Search Firebird

--
wloochacz

zpk

unread,
Oct 28, 2009, 10:08:18 AM10/28/09
to
> Full Text Search Firebird
>
> --
> wloochacz

Dzięki Tobie już się do tej technologii przemierzam od jakiegoś czasu.
Niewątpliwie jest to właściwe podejście, szczególnie jeżeli dokumenty
są np. spakowane.

Paweł Krzyżanowski

Grzegorz Skoczylas

unread,
Oct 28, 2009, 11:30:33 AM10/28/09
to
Rajmund Wrotek pisze:
> Witam serdecznie.
>
> Od jakiego� czasu zmagam si� z tematem wyszukiwania w�r�d rekord�w
> zawierajacycych du�e partie tekstu.
> Mam baz� FB. W jednej z tabel jest pole blob (tekstowe) do kt�rego mam
> za�adowany zwyk�y tekst. Tego tekstu jest kilka stron. Takich rekord�w mam
> ok. 10 tyďż˝.
> Chcia�bym zrealizowa� wyszukiwanie rekord�w w tabeli po podaniu fragmentu
> wyst�pujacego w tek�cie z pola blob. Obecnie robi� to poprzez odpowiednei
> zapytanie SELECT i WHERE, jednak to rozwi�zanie staje si� coraz wolniejsze
> (w miar� przybywania rekord�w w tabeli).
>
> Czy jest jakaďż˝ alternatywa dla takiego wyszukiwania w bazie?
>
> Nie pragnďż˝ gotowca - w celach edykacyjnych wystarczy nakierowanie mnie na
> odpowiedniďż˝ droge.

Nie robi�em niczego takiego, ale na twoim miejscu rozwa�a�bym dwie
nasuwaj�ce si� mo�liwo�ci:

1.
Mo�na poszuka� gotowego rozwi�zania (kt�re zapewne ma swoje zalety i
wady). Trzeba te� po�wi�ci� troch� czasu na nauczenie si� korzystania z
tych rozwi�za�.

2.
Mo�na na przyk�ad za�o�y� dodatkowe tabele. W tabeli zawieraj�cej bloby
w wyzwalaczach BEFORE INSERT OR UPDATE oraz w AFTER DELETE
aktualizowa�by� te dodatkowe table aktualizuj�c list� s��w b�d� fraz
wyst�puj�cych w poszczeg�lnych blobach, ze wskazaniem, w kt�rych
rekordach dane s�owo lub fraza wyst�puje. Wtedy nie szukasz bezpo�rednio
w blobach, ale w tej dodatkowej tabeli indeksuj�cej teksty z blob�w.
Wydaje mi si�, �e nie powinno to by� specjalnie trudne.

--
Pozdrawiam,

Grzegorz Skoczylas
http://gskoczylas.rekord.pl
----------------------------------------------

wloochacz

unread,
Oct 29, 2009, 3:38:34 AM10/29/09
to
Grzegorz Skoczylas pisze:
/ciach/

> 2.
> Mo�na na przyk�ad za�o�y� dodatkowe tabele. W tabeli zawieraj�cej bloby
> w wyzwalaczach BEFORE INSERT OR UPDATE oraz w AFTER DELETE
> aktualizowa�by� te dodatkowe table aktualizuj�c list� s��w b�d� fraz
> wyst�puj�cych w poszczeg�lnych blobach, ze wskazaniem, w kt�rych
> rekordach dane s�owo lub fraza wyst�puje. Wtedy nie szukasz bezpo�rednio
> w blobach, ale w tej dodatkowej tabeli indeksuj�cej teksty z blob�w.

Gotowe rozwi�zanie:
http://www.ibphoenix.com/downloads/FirebirdConf2006/TECH-TPZ303-R/TECH-TPZ303-R.zip

> Wydaje mi si�, �e nie powinno to by� specjalnie trudne.

Tak si� wydaje, ale nie jest to specjalnie �atwe, je�eli chce mie� si�
obs�ug� s��w kluczowych, s��w stop, operator�w pe�notekstowych (np.
near) itd., itp.
Tak czy siak, podany przeze mnie link zawiera opis i implementacjďż˝
rozwi�zania quasi FTS i warto chocia� przeczyta� za��czon� prezentacj�...

--
wloochacz

Rajmund Wrotek

unread,
Oct 30, 2009, 5:44:35 PM10/30/09
to
U�ytkownik "wloochacz" <nospam.w...@nospam.dgbit.pl> napisa� w
wiadomo�ci news:hcbgqn$qmc$1...@atlantis.news.neostrada.pl...
> Grzegorz Skoczylas pisze:
> /ciach/

ciach

Wdzi�czno�� moja nie zna granic :-)

Skoro teraz ju� bez problemu mog� wyszuka� rekordy zawieraj�ce podany ci�g
to czy polecenia sql umo�liwiaja mi dok�adne zlokalizowanie miejsca
wyst�pienia tej zmiennej?
Pos�u�� si� przyk�adem:
W tabeli bazy mam rekord zawieraj�cy taki tekst:
"123456789"

Wyszukanie tego rekordu odbywa si� poprzez select, czyli
SELECT * FROM BAZA WHERE POLE='56'

Chcia�bym zlokalizowa� miejsce wyst�powania szukanego s�owa po to, aby m�c
pobra� np. 2 znaki wyst�pujace przed szukan� fraz� oraz 2 znaki po szukanej
frazie, czyli uzysa� co� takiego:

"345678"

Oczywi�cei mog� dokona� tego przy u�yciu posex, ale czy niema prostrzej
metody?

0 new messages