php de benzer yazı ve videoları bulma (etiket mantığı )

youtube da olan etiketlere göre yan tarafda benzer video olayları nasıl yapılır onu yapacağız , ben burada bunu 4 farklı metodla yaptım , ve mysql de ezsql sınıfını kullandım.

ilk olarak veritababanından etiketleri seçelim

$tag_sql="SELECT seo_etiket,etiket FROM video_etiketler WHERE video_id = '101' limit 4 ";//4 adet yeterli olacaktır
$tags = $db->get_results($tag_sql, ARRAY_A);
if ($tags != '') {
foreach ($tags as $tag) {
$oyuncular_[]= $tag['seo_etiket'];//diziye aktaralım
}} else { echo 'etiket bulunamadı';}

list($a1, $a2, $a3, $a4) = $oyuncular_;//diziyi değişkene çevirdik
$aranacaklar="'".$a1."','".$a2."','".$a3."','".$a4."'";

BİRİNCİ YÖNTEM LİKE İLE ARAMA (çoklu arama yapablirsiniz)

$benzer_videolar_sql="SELECT * FROM izlebunu_video_etiketler as tag WHERE tag.seo_etiket LIKE '%".$a1."%' OR tag.seo_etiket LIKE '%".$a2."%'   ORDER BY id asc  ";
$benzer_videolar = $db->get_results($benzer_videolar_sql, ARRAY_A);
if ($benzer_videolar != '') {
foreach ($benzer_videolar as $videolar) {

echo $videolar['seo_etiket'];

}
} else {
echo 'etiket bulunamadı';
}

Yöntem 2 İN ile alanlarda içinde arama fakat in içindeki kelimelerin birebir eşleşmesi gereklidir, yakın kelime aramak için okumaya devam ediniz.  (tavsiyem önerilen çoklu arama yapablirsiniz)

$benzer_videolar_sql="SELECT * FROM video_etiketler WHERE seo_etiket IN($aranacaklar);";
$benzer_videolar = $db->get_results($benzer_videolar_sql, ARRAY_A);
if ($benzer_videolar != '') {
foreach ($benzer_videolar as $videolar) {
 //echo ''.$videolar['seo_etiket'].'
';
echo $videolar['seo_etiket'];
}}

Yöntem 3 match ve aganist kullanarak arama bu arama yönteminde ada kelimesi yazsanızda ona yakın olan kelimeleride arar mesela adalar, adana,aday gibi, çoklu arama için uygun değil daha çok google ın şunu mu demek istediniz olayı gibi benzer kelimeler getirir o işlme için kullanılablir , bunun için ayrıca bakınız …Levenshtein fonksiyonu

$benzer_videolar_sql="SELECT * FROM video_etiketler WHERE MATCH (seo_etiket) AGAINST ('".$a1."*' IN BOOLEAN MODE) limit 8";
 $benzer_videolar = $db->get_results($benzer_videolar_sql, ARRAY_A);
if ($benzer_videolar != '') {
foreach ($benzer_videolar as $videolar) {

echo $videolar['seo_etiket'];
';

}}

Yöntem 4 mysql soundex kullanarak arama yukardaki yöntemin aynısıdır, soundex birebir eşleştirme arar

      echo $benzer_videolar_sql="SELECT * FROM video_etiketler WHERE SOUNDEX(seo_etiket) = SOUNDEX('$a1') or SOUNDEX(seo_etiket) = SOUNDEX('$a2')";
$benzer_videolar = $db->get_results($benzer_videolar_sql, ARRAY_A);
if ($benzer_videolar != '') {
foreach ($benzer_videolar as $videolar) {

echo $videolar['seo_etiket'];

}
} else {
echo 'etiket bulunamadı';
}