この機能は次のように動作します。
- Web サイトにはユーザーがいて、ユーザーは任意の数の検索を保存できます (たとえば、NY の求人、PHP の求人など)。多くのパラメーターが関係しているため、これをインデックス化することは事実上不可能です (私は MySQL を使用しています)。
- 毎日多くの新しい求人がウェブサイトに掲載されます
- 24 時間ごとに、過去 24 時間以内に投稿された求人を取得し、それらを既存の求人検索と照合してから、一致する求人についてユーザーに電子メールで送信します。
ここでの問題は、トラフィックの多い Web サイトであり、楽観的なケース (新しい求人がほとんど掲載されていない) であっても、この検索クエリを実行するのに 10 分かかることです。この問題に対する古典的な解決策はありますか? 検索が集中する場所で Sphinx を使用してきましたが、ここでは適用できません。Sphinx はすべての結果を返すわけではなく、最終的にはそれらを切り捨ててしまうからです。今のところ、私ができる最善の方法は、search.matched_job_ids 列を用意し、求人が投稿されるたびに既存のすべての検索と照合し、一致した検索の Matched_job_ids 列に求人 ID を記録することです。一日の終わりに、ユーザーにメールを送信し、列を切り捨てます。これにより技術的にパフォーマンスが向上することはありませんが、1 つの大きなクエリではなく多数の小さな検索クエリを実行することで、時間の経過とともに負荷が分散されます。