ユーザーがブログ投稿などのテキストデータを入力し、リンクのテキスト内の「特別な単語」を置き換えるサービスを作成しようとしています。例えば:
ブログ投稿:
"...Pink Floyd were an English rock band that achieved international success with their progressive and psychedelic rock music..."
出力は次のようになります。
"...<a href="http://www.xxx.com?q=pink%20floyd">Pink Floyd</a> were an English <a href="http://www.xxx.com?q=rock%20band">rock band</a> that achieved international success with their progressive and psychedelic rock <a href="http://www.xxx.com?q=music">music<a/>..."
ウィキペディアのようなものがあります!
一般的なアルゴリズムは非常に単純なようです。
- テキストから特殊文字を削除します。
- タグを削除します。
- テキスト全体を小文字にします。
- ストップワードを削除します。
- 残った単語についてはデータベースを参照してください。
- 元のテキストを取得し、データベースで一致した単語を置き換えます。
しかし、問題は、データベースで約100万語を処理していることです。私はそのためにPHPとMySQLを使用していますが、私の知る限り、PHPはおそらくテキスト処理に最適なツールではありません。
トラフィックとリクエストの数によっては、このアルゴルが非常に遅くなる可能性があるため、パフォーマンスが心配です。
これに対処するための別のツールや方法を見つけようとしました。たくさんのことを見つけましたが、そのどれもがその仕事に適したツールではないと思います。mysqlの全文検索、lucene、sphinx、solrの検索を見つけました。私が間違っている場合は訂正してください。ただし、この種の検索には適切なツールではないと思います。
誰かがこれに適切に対処する方法を私に提案できますか?
考慮事項:
- 残念ながら、テキストはポルトガル語の「pt-br」であり、これは問題になると思います。
- 完全な用語を取得する必要があります。上記の例では、「ロックバンド」を取得する必要があり、「ロック」と「バンド」に分割する必要はありません。
- 私は他のプログラミング言語についての深い知識を持っていませんが、もしそうなら、私は他のテクノロジーにもオープンです!