私は2.000.000メッセージのデータベースを持っています。ユーザーの領収書を受け取ると、単語の出現に基づいてデータベースに関連するメッセージを見つける必要があります。larggestデータベースで同様のメッセージを見つける方法
データベースを要約するためにバッチプロセスを実行しようとしました: 1 - すべてのメッセージのすべての単語(a、the、for、for ...を除く)を格納します。 2 - すべてのメッセージとそこに含まれている単語の間の関連付けを作成する(この単語の頻度はメッセージに表示される)
次に、メッセージを受け取ったとき: 1 - 2 - データベース内のクエリを実行し、一致する単語の数でソートされたメッセージを取得します。
しかし、類似したメッセージを取得するために自分の単語ベースとクエリを更新するプロセスは非常に重く、遅いです。ワードベースの更新は、3000バイトのメッセージに対して〜1.2111秒続く。類似したクエリのクエリは、同じサイズのメッセージが〜9.8秒間続きます。
データベースのチューニングはすでに完了しており、コードは正常に動作しています。
私はそれを行うためのより良いアルゴリズムが必要です。
アイデア?
フルテキスト検索は必要ありませんか? http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html – Mchl
「Collective Intelligence」という本を強くお勧めします。http://www.amazon.com/Programming-Collective-Intelligence -Building-Applications/dp/0596529325/ref = sr_1_1?ie = UTF8&qid = 1296849440&sr = 8-1。これはPython向けに書かれていますが、別の言語で実装するための理論はたくさんあります。本書の最初の章には、あなたがやろうとしていることが含まれています –
私はちょうど注文しました –