проверить функцию Similar_text
http://jp2.php.net/manual/en/function.similar-text.php
или, может быть, разбить каждое слово на пробелы и рассчитать отношение с помощью собственного алгоритма.
и если вы можете добавить таблицу в mysql, вы должны создать таблицу, которая будет содержать расчетное отношение каждого сообщения.
CREATE TABLE blog_table.`posts_relation` (
`post_id` INT UNSIGNED NOT NULL ,
`related_post_id` INT UNSIGNED NOT NULL ,
`relation` FLOAT UNSIGNED NOT NULL ,
INDEX ( `post_id` , `related_post_id` )
)
обновлять каждый раз, когда вы добавляете сообщение, или, может быть, один раз в день.
и захватите ваши результаты с чем-то вроде
SELECT posts.* FROM posts, posts_relation WHERE posts_relation.post_id = {$post_id} AND posts.post_id = posts_relation.related_post_id ORDER BY posts_relation.relation DESC LIMIT 5