Создание связанных или похожих сообщений с использованием PHP и MySQL

Я смотрел вокруг SO и задавался вопросом, как я буду заниматься созданием похожих или похожих сообщений для отображения на моем веб-сайте с использованием 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); 

[EDIT]: Почему бы не использовать LIKE : Уточнение для OP:

Потому что это не даст правильных результатов. Предположим, что ваше текущее название – «Музыка 1980 года», и вы хотите, чтобы на нем были похожие сообщения. Теперь, если вы используете LIKE тогда появятся только сообщения, содержащие ТОЧНО последовательность слов «Музыка 1980 года». Однако, если вы используете MATCH ... AGAINST , появятся сообщения, содержащие Music OR 1980. Кроме того, сообщения, содержащие как музыку, так и 1980, будут отображаться сверху, потому что они дают SCORE для каждого результата, и мы сортируем по этой оценке. Я надеюсь, что это ясно.

[EDIT]: 2 :

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

[EDIT]: 3: OP не может использовать Полный текст :

Если вы не можете использовать полный текст (по какой-то причине), вы можете просто показать 5 случайных записей из той же категории. Поскольку они относятся к одной категории, они как-то связаны по крайней мере:

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

Измененный синтаксис: изменен LIMTI на LIMIT в коде MySQL