質問

私の構造:各カテゴリにテキストがあります。これらのテキストは、独自のエントリです。だから、テーブル「カテゴリー」とテーブル「テキスト」。すべてのカテゴリ内の約90の文章がありますが、各テキストは約300文字です。

私は何をしたいカテゴリのメタタグ(キーワード)を作ることです。どのように>関連するすべての「テキスト」を取得し、すべての単語をランク付けし、上位10単語を取ります。これらのトップ10は、カテゴリのキーワードメタタグになります。

今..トリック>これらの上位10ワードを取得する方法について説明します。現在、>私は、各テキストは、(全文である)ことを持っているあたり、単語列に分割されます。 (PHPで)この配列は非常に長くなります。後、私は各単語の頻度を取ると、周波数に再びそれをランク付けします。出来上がりのトップ10の言葉ます。

私は、この手順をテストしていませんが、私はそれが少しかかることがありますね。それだけで毎週かそこらに一度実行する必要がありますので、それがキャッシュされますが、それでも、私はタイムアウトを取得するために好きではないだろう。

君たちは、任意のヒントを持っていますか?すべてのヘルプ感謝ます。

おかげで、

モーリス

役に立ちましたか?

解決

[OK]を、今私がコメントに私の平和上記の言ったことを、私はあなたのアルゴリズムを取得します。

これを行うには、いくつかの方法が、私はPHP-重いアプローチに焦点を当て、他のSOersは、いくつかの他のものをやらせるだろう、があります。

私はあなたが既にデータベースを照会し、変数$テキストにスペースで区切られたリストとしてすべての単語を保存したと仮定するつもりです。

// Sample data in $texts
$texts      = "orange orange apple apple apple banana";
$withCounts = array_count_values( explode( ' ', $texts ) );

asort( $withCounts );
$topTen = array_keys( array_reverse( array_slice( $withCounts, -10 ) ) );

print_r( $topTen );
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top