我有一个论坛帖子表,并且想要改进基本的搜索功能,因为我们有来自世界各地的许多非英语母语用户,并且当他们拼写错误时很难找到结果。当前的论坛搜索是准确的。
这些设计中哪一个表现最好?假设数据库有 500,000 条记录并且经常使用搜索。理想情况下,我希望它搜索每条记录。
设计一
在每个论坛帖子旁边,我存储 soundex_post,其中包含所有 soundex 数据。运行搜索时,它会搜索所有搜索词,并对 soundex 字段执行 LIKE 操作。
设计二
我把它标准化。每个 soundex 代码都存储在一个新表 tblSoundexCodes 中。然后有一个表 tblForumPostSoundexCodes:
身份证 | Post_ID | SoundexCode_ID | 数数
然后,当搜索 soundex 时,我只需提取 SoundexCode_ID = n的所有 Post_ID
我是否正确,方法二会快得多,但维护起来会困难得多(IE,当人们编辑帖子时)。