Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyszukiwanie pełnotesktowe w Postgresql
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
nylon
Czesc wszystkim,

Temat wydawałby się popularny, a nie znalazlem zadnego wpisu w forum o wyszukiwaniu poelnotekstowym w PostreSQL.

Pytanie: Co moglibyscie mi polecic, jezeli mam 2 kolumny, z czego jedna to tytul (srednio kolo 4 wyrazow) + opis (srednio kolo 7 wyrazów).

Chcialbym przeszukiwac bazę w poszukiwaniu wyrazów, które naleza do zbioru wyrazów z tych dwóch kolumn.

Czy mozecie cos polecic?

Znalazlem cos takiego jak Tsearch2, ale zastanawiam sie tez nad samymi indexami. Czy indexy mogą sie nadawac do kolumn, gdzie bedzie kilak wyrazów?



Prosze o pomoc.
kris2
Niestety indeksy nie obsłużą tego w dobry i wydajny sposób.
Znalazłem ostatnio ciekawy artykuł:
Implementing Full Text Indexing with PostgreSQL
http://www.devx.com/opensource/Article/21674
Może to ci troche pomoże
phpion
Witam,
pozwolę sobie odświeżyć temat. Aktualnie poznaję wyszukiwanie pełno tekstowe w PostgreSQL i mam pewien problem z rankingowaniem. Otóż zapytanie:
  1. SELECT *, rank(pole, q) FROM fultekst, to_tsquery('mietek') AS q WHERE pole @@ q;

zwraca:
Cytat
ERROR: function rank(tsvector, tsquery) does not exist

Co mam zrobić aby dodać takową funkcję? Googlowanie na niewiele się zdało (ciekawe zapowiadał się rezultat dla http://www.scribd.com/doc/4846364/Fulltext...h-in-PostgreSQL ale nic konrketnego tam nie znalazłem...).

Korzystam z PostgreSQL 8.3 na Windows XP.

Proszę o pomoc,
pion
wlamywacz
A może Tsearch ?
Riklaunim
OpenFTS, czy też ew. Tsearch smile.gif
phpion
Odświeżam temat bo mam pewien problem z TSearch2. Otóż mam tabele:
product [id, price...]
product_i18n [product_id, locale_id, name, description, tsearch2_vector]
Kolumna tsearch2_vector jest oczywiście typu tsvector. Chciałbym teraz wyszukać produkty, które pasują do zadanego wzorca czyli przeszukać tą właśnie kolumnę i dołączyć tabelę product do tabeli product_i18n. Mam więc takie zapytanie:
  1. SELECT
  2. *
  3. FROM shp_product_i18n, to_tsquery('buty|adidas') AS q
  4. LEFT JOIN shp_product ON shp_product.id=shp_product_i18n.product_id
  5. WHERE shp_product_i18n.tsearch2_vector @@ q;

Pojawia się problem:
Cytat
Query failed: ERROR: invalid reference to FROM-clause entry for table "shp_product_i18n"
LINE 7: shp_product ON shp_product.id=shp_product_i18n.product_i...
^
HINT: There is an entry for table "shp_product_i18n", but it cannot be referenced from this part of the query.

Gdy zapytanie złożę bez tego JOINa to działa poprawnie. Co z tym fantem zrobić? Niestety google nie bardzo mi pomogło...

Proszę o pomoc,
pion

PS: "shp_" to prefix tabel.

// Edit:
Udało mi się przenosząc JOINa do klauzli WHERE ale czy da się to zrobić jednak z JOINem?
  1. SELECT
  2. *
  3. FROM shp_product_i18n, to_tsquery('buty|adidas') AS q, shp_product
  4. WHERE shp_product_i18n.tsearch2_vector @@ q AND shp_product.id=shp_product_i18n.product_id ;
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.