如果我们已经有了 CONTAINS,为什么还需要 FREETEXT?

Why we need FREETEXT if we already have CONTAINS?

如果我们已经有了 CONTAINS,为什么还需要 FREETEXT?在 SQL 服务器中,你能给出我们可以使用的确切位置吗?

使用 FREETEXT 的语法与 CONTAINS 完全相同,所以当你需要做一个 CONTAINS 和 FREETEXT 时,

FREETEXT evaluates not only on the string, but also the meaning. Whereas CONTAINS用于对字符串进行精确或模糊搜索。

CONTAINS 和 FREETEXT 是非常相似的函数。 return 都是一个布尔值,并且都采用 2 个参数:自由文本索引列名称和自由文本搜索词。但他们的行为却大不相同。

正如larnu所说,即使有时语法相同,也不意味着做同样的事情。

FREETEXT 是更具限制性的谓词,默认情况下它会根据单词或短语的各种形式进行搜索(这意味着它默认包括屈折形式和词库)。

CONTAINS 与 FREETEXT 不同,让您可以灵活地分别进行各种形式的搜索。

这些博客向我们展示了一些示例,使我们更清楚地了解如何通过 FREETEXT 和 CONTAINS 完成不同的搜索。这可能有助于您更好地了解 FREETEXT 和 CONTAINS。

参考:

  1. 使用 FREETEXT 还是 CONTAINS 全文搜索更好 按单个字符搜索
  2. Full Text Queries : CONTAINS and FREETEXT predicates
  3. Sql 服务器全文搜索提示第 2 部分:包含与不包含 FREETEXT

HTH.