Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sens użycia wyszukiwania pełnotekstowego
Forum PHP.pl > Forum > Bazy danych > MySQL
lukasamd
Witam,
modyfikuję obecnie na własne potrzeby pewnego CMSa (a dokładniej php-fusion).

Domyślnie gdy użytkownik wchodzi do jakiegoś artykułu, skrypt szuka w bazie arta o odpowiednim id (a ten jest przekazywany przez adres metodą GET np. readarticle.php?article_id=1) i z niego odczytuje wszelkie informacje potrzebne do wyświetlenia treści na stronie.

Ja zastąpiłem id inną, tekstową a nie numeryczną wartością - article_url. Stosuję to po to, aby dodać przyjazne i wygodniejsze linki np: artykuly/nazwa-artykulu. Oczywiście korzystam z mod_rewrite.

Ma wobec tego pewne pytanie: normalnie tabela korzystała tylko z indeksu właśnie na id. Czy warto dać index fulltext na pola od url oraz tytułu. To drugie po to, aby wyszukiwanie artykułów w szukajce dla użytkowników również było wydajniejsze (dziwne, że nie było tego w standardzie...).

Nie wiem czy dobrze kombinuję, bo nie miałem jeszcze okazji używać fulltexta. Wszędzie jest jednak rozsławiany przy wyszukiwaniu tekstu. Jeżeli można prosić - oświećcie mnie w tej kwestii winksmiley.jpg
dr_bonzo
1. Fulltext ma inne api wyszukiwania niz zwykle WHERE .... , wiec jak nie bylo wykorzystywane to ten index nic ci nie da.
2. Jesli szukasz artykulow po url-u to MUSISZ miec indeks na to pole, co znacznie przyspieszy ich wyszukiwanie.
Lub dodaj id artykulu do URLi : artykuly/nazwa-artykulu-123.html i nadal korzystaj z ID
lukasamd
No właśnie chcę wywalić nawet id, ponieważ wygląda to kijowo winksmiley.jpg
Muszę... no właśnie tak podejrzewałem.

Nie rozumiem pierwszego punktu (api?) - modyfikując robię gruntowną przebudowę, wliczając w to tworzenie tabel w bazie od nowa, więc mogę wrzucić (jeżeli o to Ci chodziło).
dr_bonzo
Jesli chcesz budowac szukarke od nowa - prosze bardzo - wszystko da sie osiagnac, ale napisales tylko tyle:

Cytat
Czy warto dać index fulltext na pola od url oraz tytułu. To drugie po to, aby wyszukiwanie artykułów w szukajce dla użytkowników również było wydajniejsze (dziwne, że nie było tego w standardzie...).


co zrozumialem "do standardowej szukarki php-fusiona dodalem fulltext-index aby wyszukiwanie bylo szybsze".

Jesli szukarka nie korzystala z fulltextowych indeksow, to ich dodanie NIC nie zmieni (musisz szukarke poprawic), bo API korzystania z FULLTEXT jest:

"MATCH (col1,col2,...) AGAINST (expr [search_modifier])" i nie moze dzialac jak nei masz odpowiedniego indeksu (nie miales, wiec nie jest przystosowana do fulltexta, wiec dodanie indeksu nic nie zmieni - hmm, mam nadzieje ze nie zakrecilem tongue.gif)

http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html
lukasamd
Szukajkę dostępną dla userów też będę poprawiał, w niej oprócz url'a będzie się też liczył tytuł, więc jemu też dam fullindexa.

Najbardziej zależy mi na szybkim wyszukiwaniu artykułu, gdy ktoś po prostu na niego wejdzie przez przyjazny link -> oryginalnie wszystko odbywa się przez article_id z $_GET, u mnie w $_GET jest wartość tekstowa, która później jest wyszukiwana aby znaleźć żądany artykuł.
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.