2013-03-27 60 views
2

低排名的一个名为“红色自行车与升级的赛车框架”的产品,一个CONTAINSTABLE搜索返回如下:SQL CONTAINSTABLE返回精确匹配

containstable(tbl, col, '"red bike"') Rank: 100 
containstable(tbl, col, '"red bike with upgraded racing frame"') Rank: 255 

我的问题是:

  • 为什么第二次搜索返回255而不是1000 - 我应该使用除了containstable以外的东西吗?
  • 有没有更好的方式来实现我的最终结果?

我在寻找的最终结果是搜索产品名称的快速方法。我选择,因为我的测试显示,它比做“tbl.col.field =‘’或者tbl.col.field像‘显著更快地使用CONTAINSTABLE %%’”,也因为我希望能够做全文搜索除了部分和完全匹配搜索。

产品名称结果被聚合与其它结果 - 例如,当用户运行的搜索,产品名称和产品描述都搜索和结果进行组合。出于这个原因,我想确切的产品名称匹配排名最高,但目前发生的情况是,有时候描述全文匹配会超过确切的产品名称匹配。

我试图避免为每个搜索类型进行硬编码的等级值写入多个查询。

回答

0

我不相信有反正像你想与CONTAINSTABLE全文搜索结果中为列指定的加权值。

您可以在各个栏目上使用FREETEXTTABLE来实现您自己的自定义“排名”系统,然后将结果与自定义的已排序值相结合,从而为产品名称提供“产品名称”作为解决方案。