2009-05-19 4 views
1

私たちのデータベースには2つのテキストフィールド( 'post_text' & 'post_slug')があります。 post_text = "Hello World!"なので、post_slug = "hello-world"です。 既存のフィールドだけを操作している各投稿にタグを付けずに、関連する投稿機能を実装する方法はありますか? (PHP、MySQL)各投稿にタグを付けることなく、関連する投稿機能を実装する方法は?

p.s.データベースには多くの投稿が含まれています。

+0

ようなもので、あなたの結果をつかむ、あなたは 'post_text'フィールドの類似性に応じて、関連記事を決定したいと思いますか? (言葉の比較。) –

答えて

1

チェックアウトsimilar_text機能を http://jp2.php.net/manual/en/function.similar-text.php

または多分スペースで各単語を分割し、独自のアルゴリズムとの関係をcaculate。

テーブルを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`) 
) 

あなたが投稿を追加するたびに、あるいは1日に1回だけ更新されます。

とおそらく

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 
+0

興味深いです、ありがとう;) – Ken

3

ちょうどメモ:あまりにも多くの仕事と不可能の間の大きなデータベースのため、ページを表示するたびに関連する投稿をすばやく計算する必要はありません。

通常は、使用しているアルゴリズムを定期的に実行し、元のテーブルを参照する別のテーブルに情報を保存します。投稿を表示すると、単純な結合になります。

関連する問題