ugrás a tartalomhoz

Related bejegyzések rangsora

Radon · 2016. Feb. 22. (H), 12.36
Sziasztok. A következőben szeretnék segítséget kérni:
Vannak bejegyzések, amiket felhasználók hoznak létre, és ha nézel 1 bejegyzést, oldalt megjelenik kapcsolódó bejegyzés mint a youtube-on.
A bejegyzéseknek van:
- Hashtag-jei,
- Címe,
- Kategóriája, és
- Létrejozó felhasználója.
Ezek alapján dobja ki a kapcsolódó bejegyzéseket randomra.
A lekérésben ezeket fűztem össze OR-al.
A kérdés az lenne, hogy lehetne-e ezeket a kritériumokat rangsorolni, hogy pl a hashtag megfelelés a legfontosabb, LIMIT 10nél, ha nincs 10, akkor keressen kategóriába is stb.
Alap lekérés ez lenne:
SELECT id FROM tábla WHERE hashtag LIKE $hashtag OR title LIKE $title OR category_id=$category_id OR user_id=$user_id ORDER BY RAND() LIMIT 10 
 
1

Például

Hidvégi Gábor · 2016. Feb. 22. (H), 17.14
Minden kritériumhoz készíts egy lekérdezést:
$sql = "SELECT id FROM tábla WHERE hashtag LIKE $hashtag LIMIT 10;";
$eredmeny = db_lekerdezes($sql);
if (sizeof($eredmeny) < 10) {
  $sql = "SELECT id FROM tábla WHERE title LIKE $title LIMIT 10;";
  $eredmeny = array_merge($eredmeny, db_lekerdezes($sql));
}
if (sizeof($eredmeny) < 10) {
  ...
}
3

Én is hasonlóra gondoltam.

Radon · 2016. Feb. 25. (Cs), 10.37
Én is hasonlóra gondoltam. köszi megnézem.
2

Lehet egy SQL lekérdezésben

csla · 2016. Feb. 23. (K), 00.59
Lehet egy SQL lekérdezésben is, de azért meg kell vizsgálni, hogy melyik megoldás az optimális.
SELECT id FROM tábla WHERE hashtag LIKE $hashtag OR title LIKE $title OR category_id=$category_id OR user_id=$user_id ORDER BY CASE WHEN hashtag LIKE $hashtag THEN 1 ELSE 2 END LIMIT 10
Ha a többi szűrőfeltételt is rangsorolni akarod, akkor lehet tovább bővíteni a WHEN ágakat.
4

hú ez nagyon durva, ilyet még

Radon · 2016. Feb. 25. (Cs), 10.37
hú ez nagyon durva, ilyet még nem láttam:) megnézem köszi.