tsearch2 i pola do wyszukiwania
ErkA - 22-03-2007 00:06
tsearch2 i pola do wyszukiwania
Witajcie ;)
nadrabiam w top20 :D, anyway udalo mi sie poprawnie uruchomic polski slownik, jest troche ubogi (wazy ponad 3mb), ale dziala jak nalezy, dzieki wszystkim za pomoc.
Mam teraz pytanie z innej beczki, mianowicie jesli ts liczy, na ktorej pozycji jest dany wyraz, to co proponujecje zrobic w przypadku, jesli mam nastepujace pola: tytul, zajawka, opis, slowa_kluczowe - wszystkie slowa z tych pol chcialbym zindeksowac, pytanie co bedzie efektywniejsze - zalozyc 4 dodatkowe vectory czy polaczyc te pola i wrzucic do jednego vectora? Wydaje mi sie, ze w jednym worku strace mozliwosc korzystania z np. headline bo pozycje nie beda sie zgadzaly, choc z drugiej strony zakladac 4 dodatkowe vectory + informacje w tabelach - czy to nie spowolni dzialania zapytan? Chcialbym umozliwic wyszukiwanie rozbite tzn po tytule, zajawce. etc.. nie wiem jak to porzadnie zaprojektowac.
Obecnie to wyglada tak - wszyskie pola z podstawowymi informacjami (w tym tytul, zajawka, slowa kluczowe sa jednej tabeli, w drugiej zas mam pote z konkretna trescia + vector)
CREATE TABLE produkty ( id serial NOT NULL, name_short character varying(128), name_long character varying(255) NOT NULL DEFAULT zajawka text NOT NULL, keywords character varying(255) NOT NULL DEFAULT c_netto numeric(10,2) NOT NULL DEFAULT 0.00, c_brutto numeric(10,2) NOT NULL DEFAULT 0.00 (ciach inne pola) );
CREATE TABLE produkty_opis ( id serial NOT NULL, pid integer NOT NULL, opis text, opis_search tsvector, );
(opis i ustawienia musza byc w dwoch tabelach)
jeszcze jedno pytanie, czy ts poradzi sobie ze zliczaniem pozycji slow, gdy bede vectorowal tresc z kodem HTML - czy najpierw tagi wyczyscic?
-- pozdrawiam serdecznie rafi
+++++++++++to++nie++jest++reklama++;)+++++++++++ www.BAZAREK.pl - DARMOWE SKLEPY INTERNETOWE, Otwórz sklep online i zarabiaj-bez opłat, bez prowizji ++++++++++++++++++++++++++++++++++++++++++++++++
=?UTF-8?B?RmlsaXAgUmVtYmlhxYJrb3dza2k=?= - 28-03-2007 00:08
ErkA wrote at 2007-03-21 13:21: > Witajcie ;) > > nadrabiam w top20 :D, anyway udalo mi sie poprawnie uruchomic polski > slownik, jest troche ubogi (wazy ponad 3mb), ale dziala jak nalezy, > dzieki wszystkim za pomoc. > > Mam teraz pytanie z innej beczki, mianowicie jesli ts liczy, na ktorej > pozycji jest dany wyraz, to co proponujecje zrobic w przypadku, jesli > mam nastepujace pola: tytul, zajawka, opis, slowa_kluczowe - wszystkie > slowa z tych pol chcialbym zindeksowac, pytanie co bedzie > efektywniejsze - zalozyc 4 dodatkowe vectory czy polaczyc te pola i > wrzucic do jednego vectora? Wydaje mi sie, ze w jednym worku strace > mozliwosc korzystania z np. headline bo pozycje nie beda sie zgadzaly, > choc z drugiej strony zakladac 4 dodatkowe vectory + informacje w > tabelach - czy to nie spowolni dzialania zapytan? Chcialbym umozliwic > wyszukiwanie rozbite tzn po tytule, zajawce. etc.. nie wiem jak to > porzadnie zaprojektowac.
ja bym zaczął od _dokładnego_ określenia funkcjonalności wyszukiwarki. ważne żeby domyślny/najczęstszy sposób wyszukiwania działał szybko. jeśli np. domyślnym jest wyszukiwanie po wszystkich polach to pewnie najbardziej wydajne będzie zagregowanie ich w jeden wektor, ewentualnie z wagami (A,B,C,D). a jeśli domyślnie szukasz np. po tytule to warto zrobić dla niego osobny wektor.
z drugiej strony: każdy dodatkowy indeks to spowolnienie operacji INSERT/UPDATE... zawsze będzie jakiś kompromis miedzy funkcjonalnościa a zużyciem zasobów. np. najszybsze dla tsvectorów są indeksy GIN ale za to są największe i chyba najwolniejsze przy update'ach. krótko mówiąc musisz dokładnie rozważyć wszystkie czynniki żeby podjąć decyzję. niektóre czynniki to - zakładana funkcjonalność - "usage patterns" - względna częstość operacji zmieniających dane - dostępny hardware
> > Obecnie to wyglada tak - wszyskie pola z podstawowymi informacjami (w > tym tytul, zajawka, slowa kluczowe sa jednej tabeli, w drugiej zas mam > pote z konkretna trescia + vector) > > > CREATE TABLE produkty > ( > id serial NOT NULL, > name_short character varying(128), > name_long character varying(255) NOT NULL DEFAULT > zajawka text NOT NULL, > keywords character varying(255) NOT NULL DEFAULT > c_netto numeric(10,2) NOT NULL DEFAULT 0.00, > c_brutto numeric(10,2) NOT NULL DEFAULT 0.00 > (ciach inne pola) > ); > > > CREATE TABLE produkty_opis > ( > id serial NOT NULL, > pid integer NOT NULL, > opis text, > opis_search tsvector, > ); > > (opis i ustawienia musza byc w dwoch tabelach) gdzie byś chciał przy takiej strukturze trzymać ten łączony (opis+zajawka+...) tsvector? imo będziesz miał pewien problem z jego aktualizacją.
> jeszcze jedno pytanie, czy ts poradzi sobie ze zliczaniem pozycji slow, > gdy bede vectorowal tresc z kodem HTML - czy najpierw tagi wyczyscic? myślę że wyczyścić. jakoś tak: opis_search := to_tsvector( ..., xml_to_text(opis) );
F.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Jak =?ISO-8859-2?Q?zamieni=E6_dwa_pola_jednej_kolumny_?==?ISO-8859-2?Q?w_dw=F3ch_rekordach_za_pomoc=B1_jednego_zapyt? ==?ISO-8859-2?Q?ania=3F?=
[mysql] Wyszukanie =?ISO-8859-2?Q?rekord=F3w=28powiazane_tabel?==?ISO-8859-2?Q?e=29?=
Jak =?ISO-8859-2?Q?pobra=E6_mo=BFliwe_warto=B6ci_z_pola_?==?ISO-8859-2?Q?typu_ENUM?=
[MySQL] Jaki typ pola aby =?ISO-8859-2?Q?trzyma=E6_liczby_od?==?ISO-8859-2?Q?dzielone_przecinkiem_=3F?=
[MySQL/PHP] Wyszukiwanie rekordu przez kolumnę wskazaną przez zmienną
=?iso-8859-2?Q?[MS_SQL]Najcz=EAsciej_wyszukiwane_frazy?=
Re: [mysql] wyszukiwanie =?ISO-8859-2?Q?ca=B3ych_hasel?=
Oracle SQL Developer - Wyszukiwanie w calej bazie
[PostgreSQL] wyszukiwanie przy sporej ilosci danych
Wyszukiwanie "do daty" w zakresie dat i ID
zanotowane.pldoc.pisz.plpdf.pisz.plkfia-tek.keep.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|