0

数千行の MySQL データベース テーブルがあります。テーブルは次のように設定されています。

id | text

id列は自動インクリメント整数で、列textは 200 文字の varchar です。

次の行があるとします。

3 | I think I'll have duck tonight

4 | Maybe the chicken will be alright

5 | I have a pet duck now, awesome!

6 | I love duck

次に、生成したいリストは次のようになります。

  • 「アヒル」の 3 回の出現
  • 「私」の 3 回の出現
  • 'have' の 2 回の出現
  • 1 件の '鶏'
  • .etc .etc

さらに、「I」、「will」、「have. 人々が何を投稿するかわからないことに注意することが重要です。

監視したい単語のリストはありません。最も一般的な部分文字列を見つけたいだけです。次に、クエリを編集して、手動でリストから興味のない誤った部分文字列を除外します。

誰でもこれを行うための最良の方法を提案できますか? みんな、ありがとう!

4

3 に答える 3

2

MySQL はすでにこれを行っています。

まず、テーブルが MyISAM テーブルであることを確認してください

列に FULLTEXT インデックスを定義する

シェル コマンド ラインで、MySQL データが保存されているフォルダーに移動し、次のように入力します。

myisam_ftdump -c yourtablename 1 >wordfreq.dump

その後、wordfreq.dump を処理して、不要な列を削除し、頻度の降順で並べ替えることができます。

1 つのコマンド ラインといくつかの sed/awk ウィザードリで上記のすべてを実行できることは間違いありません。また、ダンプ ファイルを必要とせずにプログラムに組み込むことができます。

myisam_ftdump の詳細はこちら: http://dev.mysql.com/doc/refman/5.0/en/myisam-ftdump.html

ああ...もう1つ、MySQLのストップワードはエンジンにプリコンパイルされています。また、3 文字以下の単語は索引付けされません。完全なリストは次のとおりです。

http://dev.mysql.com/doc/refman/5.0/en/fulltext-stopwords.html

このリストがニーズに合わない場合、またはカウントするのに 3 文字未満の単語が必要な場合、唯一の方法は、FULLTEXT の異なるルールで MySQL を再コンパイルすることです。私はそれをお勧めしません!

于 2008-10-30T05:44:03.560 に答える
0

MySQL Full-Text Parser Pluginsを調べることをお勧めします。

于 2008-10-30T00:10:28.227 に答える
0

フラット ファイルに展開し、お好みのクイック言語、perl、python、ruby などを使用してフラット ファイルを処理します。

これらの言語をスキルセットの一部として持っていない場合、これは言語を使い始めるのに最適な小さなタスクであり、それほど時間はかかりません。

一部のデータベース タスクは、データベースの外で実行する方がはるかに簡単です。

于 2008-10-30T00:03:59.037 に答える