0

フォーラムの投稿の表がありますが、英語を母国語としない世界中のユーザーが多く、スペルが間違っていると結果を見つけるのに苦労するため、基本的な検索機能を改善したいと考えています。現在のフォーラム検索は正確です。

これらのデザインのどれが最高のパフォーマンスを発揮しますか?データベースに500,000レコードがあり、検索が頻繁に使用されると想定します。理想的には、すべてのレコードを検索したいと思います。

デザインワン

各フォーラム投稿と一緒に、すべてのsoundexデータを含むsoundex_postを保存します。検索が実行されると、すべての検索用語がsoundexeされ、soundexフィールドに対してLIKE操作が実行されます。

デザイン2

正規化します。すべてのsoundexコードは、新しいテーブルtblSoundexCodesに保存されます。次に、テーブルtblForumPostSoundexCodesがあります。

ID | Post_ID | SoundexCode_ID | カウント

次に、soundexが検索されたら、SoundexCode_ID= nであるすべてのPost_IDを単純に引き出します。

方法2はかなり高速になりますが、維持するのがはるかに難しくなることを修正しますか(つまり、人々が投稿を編集する場合)。

4

2 に答える 2

1

デザイン2の方が優れています。

デザイン2は速くなりません。データストレージはよりコンパクトになり、誰かが投稿を書き込んだり更新したりするときに、tblForumPostSoundexCodesに行を更新または挿入するだけでなく、tblSoundexCodesに行を挿入する必要があります。

このsoundexトランザクション処理が、投稿へのすべての変更(作成、更新、削除)に対して行われることを確認する必要があります。

于 2011-04-12T13:00:29.250 に答える
1

私はあなたの考えについていくつか疑問があります。

コメントの1つにあなた自身の答えを取りましょう:

「@FrankはMSSQLであり、おそらくExpress Editionになります。例として、soundexを使用しました。おそらく、より最新のアルゴリズムを実装する予定です。」

この簡単なコメントには15語が含まれています(4文字より短いものは破棄しました)。したがって、ここで値「1」を指す15の異なるレコードが存在する可能性があります。

英語を母国語としない私が(「esample」「dait」)を検索することにした場合はどうなりますか?複数の単語を検索する機能を提供しますか?と-?また-?いいえ-?

検索をそのまま実行して、「「例と日付」を探しているのではないか」と入力したほうがよいのではないでしょうか。グーグルやウィキペディアのように?

于 2011-04-12T13:32:23.967 に答える