数分ごとに約 500 のパラグラフが「コンテンツ」と呼ばれるテーブルでデータベースに送信されることになっています (この数は数か月で 2,500 を超えることになります)。4,000 行を超える "キーワード" という別のテーブルがあります (10,000 行を超えると予想されます)。
Keywords
+------------+-------------------+
| Keyword_id | keyword |
+------------+-------------------+
| 1 | "Venture Capital" |
| 2 | "Financing" |
+------------+-------------------+
問題は次のとおりです。一致するかどうかを確認するために、各キーワードがテキストの受信段落間で相互参照されるソリューションをスケーリングする最良の方法は何ですか?
段落のどこに一致があるかは気にしていないので (私の唯一の懸念は、一致があることです)。
if(preg_match()){}
おそらく機能する可能性がありますが、2,000,000 回のローエンドでも、キーワードを検索して段落を実行しています。さらに、間違っていたら訂正してください。preg_match はかなり高価です。
私の頭をよぎった可能性の 1 つは、すべての行に対して DB を呼び出す代わりに、キーワードの配列をキャッシュに保持することでした。それは間違いなく物事をスピードアップするのに役立つと思います。
これがPHPだけであることは気にしません。アプリケーションのこのセクションを Python で作成する必要がある場合 (間違っていたら訂正してください。ただし、テキストの解析では Python の方がはるかにコストが低いと聞いています)、私は完全に耳を傾けます。