Wyszukiwanie dla kilku słów


(Radmistrz2) #1

Witam. Udoskonalam moją wyszukiwarkę mp3. Chcę, aby wyszukiwarka nie wyszukiwała tylko pojedynczych fraz tak jak tu:

wejście: feel siebie

wyjście:...feel siebue...

tylko

wejście:feel siebie

wyjście:feel siebie lub feel - pokonaj siebie

Coś kombinowałem wg wzoru ale nie wychodzi:

$tresc_zapytania = 'SELECT `id`, `post_date`, `post_title`, `link`, `size`, MATCH (post_title) AGAINST ('.addslashes($_GET['szukaj']).') AS score FROM `wp_posts` WHERE MATCH (post_title) AGAINST ('.addslashes($_GET['szukaj']).') ORDER BY MATCH (post_title) AGAINST ('.addslashes($_GET['szukaj']).') ORDER BY `id` desc LIMIT '.(($strona-1)*$wns).','.$wns;

(Kutar 0) #2

Skorzystaj wyszukiwarka oparta na FULLTEXT z BOOLEAN MODE będzie traktowała wpisane kryterium nie jako frazę, ale każde słowo oddzielnie. Wtedy powinieneś otrzymać zamierzony efekt.

Ogólnie możesz o tym poczytać tutaj: Wyszukiwanie w bazie MySQL wykorzystujące indeksy FULLTEXT

A tak na marginesie, jako ucieczki przez niebezpiecznymi znakami używaj mysql_real_escape_string() a nie addslashes().

I zauważ, że tę najbardziej złożoną operację wykonujesz aż trzy razy (MATCH (post_title) AGAINST ('.addslashes($_GET['szukaj']).')) . Nie lepiej użyć aliasu (AS) ? I później ładnie się odwołujemy.