私は現在、回答した質問に基づいてユーザーを照合する Web アプリケーションを Ruby on Rails で作成しています。次に、ユーザーの範囲を検索できます。システムは、その範囲に該当するすべてのユーザーと検索者を照合し、順序付けられたリストでそれらを返し、最も一致度の高いものが最初に来るようにします。
問題は、この操作が非常に重いワークロードであるため、その場で実行できるとは思えないことです。私はすでに SQL を最大限に最適化し、2 人のユーザー (ローカル マシン) 間の一致率を計算するのに約 8.2 ミリ秒かかる 1 つの SQL クエリで完全に一致するアルゴリズムを実現しました。問題は、検索されたユーザーが 5000 人いる場合、Rails はこのユーザーの配列を取得し、それらを繰り返し処理して、このクエリを 5000 回実行します。私のローカル マシンでは約 50 秒かかります。PostgresSQL に移行してこれをストアド プロシージャにすると、これを減らすことができますか?
私の質問は、ユーザーが検索を押したときに結果が表示されるまでに数秒しかかからないように、バックグラウンドプロセスやキャッシュなど、どのような方法がありますか? または、これはこの規模では不可能であり、一致を事前に計算して NoSQL などに保存する必要があります。5 万人のユーザーの場合、既に 25 億行あるからです。