Въпрос относно MySQL търсачка

Minimalistic

Registered
Здравейте.
Да речем че влизам в сайт за музика и търся напр. "Андреа и Costi - песен" и не намеря нищо понеже тази песен която търся е написана по друг начин, напр. "Андреа Ft. Costi - песен". Как да направя така че след като потребител потърси песен която я има в базата данни с погрешно име както примерите които дадох, да излиза текст подобен на този в гугъл "Може би имахте предвид : Андреа Ft. Costi - песен "? Възможно ли е това ?
Благодаря предварително ;-)
 
MySQL Full text search, и по-специално - boolean mode
http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html

Върху полето, в което е името на песента, трябва да бъде създаден fulltext индекс.

Заявката ти е от вида:

[sql]
select * from song where MATCH(song_title) AGAINST ('+Андреа +Costi' IN BOOLEAN MODE)
[/sql]

Търсенето е по степен на съвпадение, дори има начин да се вземе и индекса на съвпадението. Недостатъка, е че трябва да имаш повечко записи с подобно съдържание, за да се индексират и да видиш правилните резулатати. Ако имаш само 1 (или по-малко от 3 ?) резултата, няма да покаже нищо.

Има и друг вариант, но е изключително бавен и неефективен:

[sql]
select * from song where song_title like '%андреа%' or song_title like '%costi%'
[/sql]
 
ОК, един друг по-лесен вариант, обаче официално се поддържа само на английски език. При използване на други езици, MySQL не гарантира напълно верни резултати, но може да ти свърши работа.

[sql]
SELECT * FROM `songs` WHERE `title` SOUNDS LIKE 'Андреа и Costi';
[/sql]
 

Back
Горе