2011-07-25 14 views
0

テキスト解析に関するアドバイスが必要です。 プログラムは、PHPで書かれています。テキスト解析のコード効率

私のコードでは、URLを受け取り、サイトの単語とDBを照合して一致するものを探す必要があります。

トリッキーな部分は、テキストがテキストに表示されているように、単語が常にDBに書き込まれているわけではありません。

例:

のは、私のDBは、これらの値を持っているとしましょう: ワード=文字

サイトがあります。 長ったらしいもの

Iが出力になってる: 文字事

私のコードは、検索された単語をDBと照合しようとすると、いくつかの正規表現を作成します。

見つからない単語については、DBに対して8つのクエリを行います。ほとんどの単語には一致がありません。したがって、私たちはCPUのレベルが何百という単語を持つウェブサイト全体について話をすると、ジャンプします。

DBの中に見つからないすべての単語が表示されたとき(HDよりもCPUのコストが低い)、またはそのすべてを格納するための配列や辞書を作成することを考えました。

私はこのプロジェクトに本当に混乱しています。これは、多くのユーザーにサービスを提供する予定であり、現在のコードはサーバーが10〜20人のユーザー要求後に死にます。

どのような考えですか?

編集: ザ・検索単語は英語の単語ではなく、コードは、Windows 2008サーバー

答えて

0

ありがとうございました。 残念ながら、答えのどれも私を助けたことはありませんでした。

DB上のすべての単語(約6000語)でハッシュテーブルを作成し、DBの代わりにハッシュをチェックすることで問題を解決しました。

コードは実行時間が4秒で開始され、現在は0.5秒です! :-)

ありがとうございました

0

で実行するには、Sphynx & stemmingのための仕事のように私には思えます。

+0

私はサードパーティのプログラムを使用することはできません。自分のコードでのみこれを行う必要がある場合は、どのようなアプローチが最適でしょうか? – Phoenix

+0

何がわかりにくいですか? – Wrikken

+0

ライセンスは開始しており、サーバーは専用ではありません。 – Phoenix

0

おそらく愚かな質問ですが、あなたはSQLクエリでLIKE句を使用すると考えましたか?このような 何か:

$sql = "SELECT * FROM `your_table` WHERE `your_field` LIKE 'your_search'": 

私はそれがSQL側で容易に成し遂げることができ、クエリからの戻り値にあまりにも多くの文字列操作を行う必要がある時はいつでも、私は通常見つけました。

+0

Hm、おそらくさらに効果的です: 'SELECT * FROM your_table WHERE 'the_entire_document' LIKE CONCAT( '%'、your_field、 '%');' – Wrikken