【问题标题】:SQL ContainsTable returns low Rank for exact matchSQL ContainsTable 为精确匹配返回低排名
【发布时间】: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


    【解决方案1】:

    我不相信无论如何要为具有CONTAINSTABLE 全文搜索结果的列指定加权值,就像您想要的那样。

    您可以通过在各个列上使用FREETEXTTABLE 来实现您自己的自定义“排名”系统,然后将结果与排名结果的自定义加权值联合起来,从而使“产品名称”作为一项工作具有更高的准确性 -周围。

    【讨论】:

      猜你喜欢
      • 2015-05-18
      • 1970-01-01
      • 2012-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-23
      相关资源
      最近更新 更多