Doğru Cevap
-
Ben sana burda mysql MATCH AGAINST i önerisim.
Kullanımı şöyle:
SELECT * FROM yazılar WHERE MATCH(yazi,baslik) AGAINST ('$kelime');
yi öneririm. Kolonların indeksinide Full Text yaparsan çok hızlı ve stabil sonuç alırsın. ('$kelime') alanına birden fazla kelime de yazabiliyorsun ve başlarına + veya - koyarak biri olsun biri olmasın veya ikisi birden olsun ve şundan ne kadar fazlaysa o daha üstte görünsün diyebiliryorsun.
Ayrıntılı bilgi için http://dev.mysql.com/doc/refman/5.1/en/fulltext-boolean.html adresini imceleyebilirsin.
Bir dezavantajı var kelime arıyor. Hecelemelerde işe yaramaz.-
Alexander
Kelime arıyor hecelemelerde işe yaramaz derken tam anlamadım?12 yıl önce yazılmış -
yaramazca
Mesela aramak istediğiniz kelime "makale" ise "maka" kelimesine birşey döndürmez. Kelime tam olarak yazılmalıdır.12 yıl önce yazılmış -
Alexander
Biraz araştırdımda kelimenin sonuna * koyunca o kelime ile başlayanları buluyor böylece birebir kelmie ile örtüşmese bile bulacak .
$sql = "SELECT * FROM WHERE MATCH(yazi,baslik) AGAINST ('$kelime*')";
12 yıl önce yazılmış -
yaramazca
Evet buda güzel bak :). Performans olarak memnun kalacagından eminim. İndeksleri unutma. Teşekkürler.12 yıl önce yazılmış -
Alexander
İlk işim indexleri belirlemek oldu :) . Çok teşekkürler .12 yıl önce yazılmış -
yaramazca
Rica ederim. İyi çalışmalar.12 yıl önce yazılmış -
yaramazca
$sql = "SELECT * FROM WHERE MATCH(yazi,baslik) AGAINST ('$kelime*')";
bu bende neden bulmuyor peki. Kelime yazmadan yine bulmuyor. Mesela serkan* buluyorda serk* bulmuyor.
Full text sanırım sadece kelime aramalarında işe yarıyor. Kelimeyi ikiye bölünce işe yaramıyor.12 yıl önce yazılmış -
Alexander
mysql sürümünden kaynaklanıyor olabilir . Ben de sorunsuz bir şekilde çalışıyor ...12 yıl önce yazılmış
-
Cevaplar
Hiç cevap bulunamadı.