我开始涉足 MSSQL2005 的全文搜索。这是一个新的开发中数据库,所以我可以随意使用它。
假设我有一个“表单”表,它与其他两个表“答案”和“评论”具有一对多的关系。我希望用户能够输入一个搜索词,并通过全文搜索将所有这三个表挂起来。最好的方法是什么?似乎我可以创建一个索引视图来加快速度。
如果我确实使用索引视图(这是最好的路线吗?),我该如何处理一对多关系?假设我真正想弄清楚的是“表单”表的 ID,该表将包含在子答案/评论表中找到的任何搜索结果,因此我可以显示包含已定位条目的整个表单。视图上的内部连接会导致返回多个“主”表单行——这听起来对性能不太好。如何将所有子答案/评论行连接到视图的一个“列”中?所以代替....
Form 1, Answer A, Comment A
Form 1, Answer B, Comment A
Form 1, Answer A, Comment B
Form 1, Answer B, Comment B
……会……
Form 1, Answer A Answer B, Comment A Comment B
请记住,我关心的只是那个主“表单”行的 ID。
这对我来说似乎是合乎逻辑的,但我还不确定全文搜索的最佳实践,所以只是好奇我是否正确地接近它。
更新:看起来索引视图非常严格;没有左连接,没有子查询,所以我可能会沿着由触发器填充的汇总表的路径走下去,如果它不会太笨拙的话。