Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyszukiwanie pełnotesktowe w Postgresql, Full text search
nylon
post
Post #1





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 30.10.2005
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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.


--------------------
xurl | puste frazesy | kareel | ulx | zobacz więcej | porady podatkowe | niech o tobie gadają
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
kris2
post
Post #2





Grupa: Zarejestrowani
Postów: 150
Pomógł: 3
Dołączył: 15.08.2007

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
phpion
post
Post #3





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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
Go to the top of the page
+Quote Post
wlamywacz
post
Post #4





Grupa: Zarejestrowani
Postów: 535
Pomógł: 27
Dołączył: 3.05.2005

Ostrzeżenie: (20%)
X----


A może Tsearch ?
Go to the top of the page
+Quote Post
Riklaunim
post
Post #5





Grupa: Zarejestrowani
Postów: 640
Pomógł: 44
Dołączył: 8.02.2004

Ostrzeżenie: (0%)
-----


OpenFTS, czy też ew. Tsearch smile.gif


--------------------
Biblioteki: Skrypty, CMS | Kurs PHP | Python
Go to the top of the page
+Quote Post
phpion
post
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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 ;


Ten post edytował phpion 20.02.2009, 09:51:29
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 14:54