2

对于名为“带有升级赛车框架的红色自行车”的产品,包含表搜索返回以下内容:

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 '%%'' 快得多,还因为我希望能够进行全文搜索除了部分和完全匹配搜索。

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

我试图避免为每种搜索类型和硬编码排名值编写多个查询。

4

1 回答 1

1

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

您可以通过在各个列上使用来实现您自己的自定义“排名”系统FREETEXTTABLE,然后将结果与排名结果的自定义加权值联合起来,从而为“产品名称”提供更高的优先级作为解决方法。

于 2013-03-27T14:36:40.340 回答