Mysql
 sql >> база данни >  >> RDS >> Mysql

Създаване на свързани или подобни публикации с помощта на PHP и MySQL

Използване на пълнотекстово търсене на MySQL MATCH (col1,col2,...) AGAINST (expr [search_modifier]) нещо.

Да приемем, че вашата таблица е articles и трябва да намерите свързани публикации за заглавие на текущата публикация. Направете го така:

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

Това ще ви даде топ 5 сродни публикации.

Но първо не забравяйте да активирате пълнотекстово търсене за колоните на тази таблица, като изпълните тази заявка:

ALTER TABLE articles ADD FULLTEXT (title, body);

[РЕДАКТИРАНЕ]:Защо да не използвате LIKE : Разяснение към ОП:

Защото няма да даде правилни резултати. Да приемем, че текущото ви заглавие е „Музиката на 1980 г.“ и искате свързани публикации за това. Сега, ако използвате LIKE тогава ще се появят само публикациите, съдържащи ТОЧНО поредицата от думи "Музиката на 1980". Въпреки това, ако използвате MATCH ... AGAINST , тогава ще се появят публикации, които съдържат музика ИЛИ 1980. Освен това публикациите, които съдържат както Музика, така и 1980, ще се показват най-отгоре, защото дава SCORE за всеки резултат и ние сортираме по този резултат. Надявам се, че е ясно.

[РЕДАКТИРАНЕ]:2 :

Ако имате категории, можете да добавите AND Category = '$CurrentCategory' в SQL заявката where clause за да получите по-конкретни резултати.

[РЕДАКТИРАНЕ]:3:OP не може да използва пълен текст :

Ако не можете да използвате пълен текст (по някаква причина), можете просто да покажете 5 произволни публикации от една и съща категория. Тъй като са в една и съща категория, те са поне по някакъв начин свързани:

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

Редактиран синтаксис:Променено LIMTI на LIMIT в MySQL код



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Подредете по последните 3 знака

  2. Как работи функцията UPPER() в MySQL

  3. запитвайте таблица всяка секунда за известяване. Добра практика ли е?

  4. Избиране на MYSQL редове със същите имена на полета и добавяне на префикс

  5. Как да сравня входните данни с mysql данни с php/sql?