0

数百万行の2つのテーブルの行で一致する単語を数えたい場合は、次のサンプルを使用してください。

テーブル投稿、サンプル:

+----+---------+-----------------------------+
| ID | ID_user | text                        | 
+----+---------+-----------------------------+
| 1  | bruno   | michael jackson is dead     |
| 2  | thomasi | michael j. moonwalk is dead |
| 3  | userts  | michael jackson lives       |
+----+---------+-----------------------------+

テーブルで最も繰り返される単語をクエリしたいのですが、上位10を制限すると、結果は次のようになります。

+-------+------------+
| count | word       |
+-------+------------+
| 3     | michael    |
| 2     | dead       |
| 2     | jackson    |
| 1     | j.         |
| 1     | lives      |
| 1     | moonwalk   |
+-------+------------+

しかし、10回以上繰り返される単語のみを検索したいのですが、この場合は誰も表示されませんが、繰り返される単語の基準が2の場合、「michael」と「dead」のみが表示されますが、「is」は無視されます。長さが2文字未満の単語、およびそのフレーズの単語の場合、これを表示する必要があります。

+-------+-----------------+
| count | word            |
+-------+-----------------+
| 2     | michael jackson |
| 2     | dead            |
+-------+-----------------+

自分のサイトの投稿に対してTwitterの「トレンドトピック」に返信するmysqlのコードが必要です。

4

2 に答える 2

3

探しているのは、MySQL 内でネイティブに提供されていない用語抽出です。

他のいくつかのプラットフォームはその機能を提供しますが、それはエンタープライズ機能と見なされているため、鼻から支払う必要があります.

または、Yahoo! の Term Extraction APIなどを使用できます。

これは、 PHP5から Yahoo! のサービスを使用する方法について説明しているブログ投稿です。

于 2009-07-15T15:28:09.927 に答える
0

挿入時に文を分割し、ブラックリストに対して単語をフィルタリングし、個別の単語をカウント (またはおそらく参照) と共に保存します。count() :) を使用して数える

これにより、大量のデータが生成され、速度とストレージへの影響がどうなるかわかりません。

于 2009-07-15T16:40:56.287 に答える