Как реализовать функцию связанных постов, не отмечая каждый пост? - PullRequest
1 голос
/ 19 мая 2009

У нас есть 2 текстовых поля ('post_text' и 'post_slug') в нашей базе данных. Допустим, post_text = "Hello World!", Поэтому его post_slug = "hello-world". Как реализовать функцию связанных постов, не отмечая каждый пост, используя только существующие поля? (PHP, MySQL)

p.s. база содержит много постов.

Ответы [ 2 ]

3 голосов
/ 19 мая 2009

Просто примечание: вам определенно не нужно вычислять связанные сообщения на лету каждый раз, когда вы отображаете страницу, потому что в большой базе данных это будет где-то между слишком большой работой и невозможным.

Обычно вы периодически запускаете любой используемый вами алгоритм и сохраняете информацию в отдельной таблице, ссылающейся на вашу исходную таблицу. Тогда показ сообщения будет простым соединением.

1 голос
/ 19 мая 2009

проверить функцию 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...