【发布时间】:2013-03-17 16:20:47
【问题描述】:
对于名为“带有升级赛车车架的红色自行车”的产品,包含表搜索返回以下内容:
containstable(tbl, col, '"red bike"') Rank: 100
containstable(tbl, col, '"red bike with upgraded racing frame"') Rank: 255
我的问题是:
- 为什么第二次搜索返回 255 而不是 1000 - 我应该使用不是 containstable 的东西吗?
- 有没有更好的方法来实现我的最终结果?
我正在寻找的最终结果是一种快速搜索产品名称的方法。我选择使用 containstable 是因为我的测试表明它比执行 'tbl.col.field = "" 或 tbl.col.field like '%%'' 快得多,还因为我希望能够进行全文搜索除了部分和完全匹配搜索。
产品名称结果正在与其他结果汇总 - 例如,当用户运行搜索时,产品名称和产品描述都会被搜索并合并结果。出于这个原因,我希望准确的产品名称匹配排名最高,但目前的情况是,有时描述全文匹配会超过准确的产品名称匹配。
我试图避免为每种搜索类型和硬编码排名值编写多个查询。
【问题讨论】:
标签: sql sql-server-2008 search full-text-search containstable