sql >> Database >  >> RDS >> Mysql

Een gerelateerde of vergelijkbare post maken met PHP &MySQL

De MySQL Full Text-zoekopdracht gebruiken MATCH (col1,col2,...) AGAINST (expr [search_modifier]) ding.

Stel dat uw tabel articles is en je moet gerelateerde berichten vinden over een titel van het huidige bericht. Doe het als volgt:

SELECT *, MATCH(title, body) AGAINST('$CurrentPostTitle') AS score
FROM articles 
WHERE MATCH(title, body) AGAINST('$CurrentPostTitle') 
ORDER BY score DESC LIMIT 5

Dit geeft je de top 5 gerelateerde berichten.

Maar onthoud eerst dat u zoeken in volledige tekst voor de kolommen van die tabel moet inschakelen door deze zoekopdracht uit te voeren:

ALTER TABLE articles ADD FULLTEXT (title, body);

[EDIT]:Waarom LIKE niet gebruiken : Verduidelijking aan OP:

Omdat het niet de juiste resultaten geeft. Laten we zeggen dat je huidige titel "Muziek van 1980" is en je wilt gerelateerde berichten daarover. Als je nu LIKE . gebruikt dan verschijnen alleen de berichten die PRECIES de reeks woorden "Muziek van 1980" bevatten. Als u echter MATCH ... AGAINST . gebruikt , dan verschijnen er berichten die Muziek OF 1980 bevatten. Ook zullen de berichten die zowel Muziek als 1980 bevatten bovenaan verschijnen omdat het een SCORE . geeft bij elk resultaat en we sorteren op die score. Ik hoop dat het duidelijk is.

[EDIT]:2 :

Als je categorieën hebt, kun je AND Category = '$CurrentCategory' . toevoegen in de SQL-query where clause om meer specifieke resultaten te krijgen.

[EDIT]:3:OP kan geen volledige tekst gebruiken :

Als je Full Text (om de een of andere reden) niet kunt gebruiken, kun je gewoon 5 willekeurige berichten uit dezelfde categorie tonen. Omdat ze in dezelfde categorie vallen, zijn ze op de een of andere manier verwant aan elkaar:

SELECT *
FROM articles 
WHERE Category = '$CurrentCategory'
LIMIT 5

Bewerkte syntaxis:LIMTI gewijzigd in LIMIT in MySQL-code



  1. Hoe SIN() werkt in MariaDB

  2. RODBC sqlSave-problemen bij het maken van tabellen

  3. Hoe een taak plannen in Oracle SQL Developer?

  4. Afbeelding invoegen in SQL Server 2005-afbeeldingsveld met alleen SQL