次のようなデータベースがあるとします。
Actions_tbl:
-------------------------------------------------- ------ ID | アクション名 | ユーザーID| -------------------------------------------------- ------ 1 | ジョンは一冊の本を読む | 1 2 | ジョンの本を読む | 1 3 | ジョーは火を飛び越える | 2 4 | 別の本を読む | 2 5 | ジョンは図書館で本を読む | 1 6 | ジョーは本を読む | 2 7 | 本を読む | 3 8 | 理由もなくジャンプするのがロナルドの癖です | 3
Users_tbl:
----------------------- ユーザー ID | ユーザー名 | ----------------------- 1 | ジョン 2 | ジョー 3 | ロナルド 4 | アラズ -----------------------
ユーザーに関係なく、最も繰り返される同様のアクションを選択し、自分の user_name を現在のユーザーに置き換えることができるかどうか疑問に思っています!
ある本を読んで、本を読んで、別の本を読んで、図書館で本を読んで、本を読んで、本を読んで、最も一般的な単語を持っているので、本を読むことに関連するスタッフは6回繰り返され、私のシステムは表示するはずですこれらの 6 つの文の 1 つをランダムに選択し、Araz を user_name に置き換えます
Like: アラズは本を読む
私のアイデアは
select replace(a.action_name , b.user_name) from actions_tbl a, user_tble b where a.user_id = b.user_id group_by
次に、phpで類似点を1つずつ確認します
levenshtein()
しかし、これはまったくパフォーマンスがありません!
大きなデータベースといくつかの異なるテーブルに対して同じことをしたいとします。これは私のサーバーを破壊します!!!
より良いアイデアはありますか?
http://www.artfulsoftware.com/infotree/queries.php#552では、levenshtein() 関数が MySQL 関数として実装されていますが、まず、十分なパフォーマンスがあると思いますか? そして、私の場合はどのように使用するのですか?たぶん、自己結合バンがこの問題を修正しますが、私はSQLが得意ではありません!
* 類似のアクションは、X% 以上の一般的な単語を持つアクションです
**詳細情報と注意事項:**
私はPHPとMySQLに限定されています。
これは単なる例です。私の実際のプロジェクトでは、アクションは長い段落です。だからこそ、パフォーマンスは問題です。実際のシナリオは次のとおりです。ユーザーがいくつかのプロジェクトのプロジェクトの説明を入力しました。これらのデータは類似している可能性があります (ユーザーは同じ作業領域を持っている可能性があります)。次のプロジェクトの説明を (以前の入力に基づいて) 自動的に入力したい、時間を節約するために。
実用的な解決策があれば幸いです 。NLP 関連のソリューションをチェックしましたが、それらは興味深いものですが、それらの多くは正確ではなく、PHP を使用して実装できるとは思いません。
出力は、他のすべてのプロジェクトと同様に意味があり、適切な段落である必要があります。そのため、以前のものから選択することを考えていました。
あなたの知的な答えをありがとう、あなたが状況に光を当てることができれば本当に感謝しています