我正在尝试设计一个以搜索能力为核心的数据库。我对数据库设计和 SQL 的了解都是自学的,而且还是相当初级的,所以我的问题可能很容易回答。
假设我有一个包含大量记录的表。例如,假设每条记录都包含不同计算机应用程序的详细信息(名称、开发人员、版本号等)。关键字列表与每条记录相关联,例如用于编写应用程序的编程语言列表。
我希望能够在搜索框中输入一个或多个关键字(每个关键字以空格分隔),并希望返回所有相关记录。我应该如何设计数据库来存储关键字,以及我需要对搜索文本应用什么 SQL 查询?(搜索应该是大写/小写独立的。)
然后我的下一个挑战是按相关性对搜索结果进行排序,并允许将整个关键短语以及关键字与每条记录相关联。例如,如果我在搜索字段中键入“Visual Basic”,我希望第一个结果准确地具有与其相关联的关键短语“Visual Basic”。下一个结果应该都有与之关联的关键字“Visual”和“Basic”,其余结果应该只有其中一个关键字。再次,请任何人就如何实现这一点提出建议?
我相信最后的挑战会更加困难:我可以设计我的数据库和 SQL 代码来处理多少“智能解释”?例如,如果我搜索“CSS”,是否可以显示带有关键短语“Cascading Style Sheets”的记录?我是否还可以让 SQL 识别和搜索相似的词,例如搜索短语的复数形式,或者输入“program”时的“programmer”或“programming”?谢谢!