0

我们有一个使用 SQL 服务器在 DNN 7.1 上运行的网站。我们实现了全文搜索来显示搜索结果。我们需要搜索几个表并将结果显示给用户。现在的实现是用户输入搜索词并点击搜索,后面的代码创建了几个线程来搜索不同的表,并合并数据。目前我们使用的是 contains 谓词,问题是没有排名,有时在合并后第一页上的结果不是最佳匹配。我认为我可以使用 containstable 并通过排名对结果进行排序,但我阅读排名本身并没有任何意义,它只是告诉了当前结果集中哪一个最匹配。但在我的场景中,我有多个结果集,我怎么知道哪些是跨多个结果集的最佳匹配。还是我走错路了?处理这种情况的好方法是什么?我们需要改进响应时间以及更好的结果。任何帮助是极大的赞赏。

4

1 回答 1

0

这就是我们跨多个表实现全文搜索的方式:

1)创建一个新表,每列存储其他表的主键,另一列存储每个表中所有搜索字段的字符串连接值,另一列存储连接值的校验和值。

2) 在这个新表上实现 FTI,并创建一个作业,仅当 binary_checksum 值不同时才定期同步/更新连接的搜索值

3) 在这个新表上使用 contains 谓词,并根据结果,根据返回的主键连接回对应的表。

于 2013-10-09T05:46:32.647 回答