壁の特定の投稿を見つけるためのフリーテキスト検索アルゴリズムを作成しようとしています(Facebookが使用するのと同様の種類の壁)。ユーザーは、検索フィールドにいくつかの単語を書き込んで、その単語を含む投稿にヒットすることができると想定されています。一番上に最もよく一致し、次に他の投稿が一致スコアに従って降順で表示されます。
編集距離(Levenshtein) "e(x、y)= e"を使用して、クエリワード「x」および投稿ワード「y」と比較した場合の各投稿のスコアを次のように計算しています:score(x、y )= 2 ^(2-e)(1-min(e、| x |)/ | x |)、ここで "| x |" クエリワードの文字数です。
投稿内の各単語は、その特定の投稿の合計スコアに影響します。このアプローチは、投稿のサイズがほぼ同じである場合にうまく機能するように見えますが、実際にはクエリに関連していないのに、特定の大きな投稿が多くの単語を含むだけでスコアを上げることができる場合があります。
私はこの問題に間違った方法でアプローチしていますか、それとも私が考えていなかったスコアを正規化する方法がありますか?