全文搜索查询

若要在 Microsoft SQL Server 2005 中编写全文查询,必须了解如何使用 Transact-SQL 谓词 CONTAINS 和 FREETEXT 以及行集值函数 CONTAINSTABLE 和 FREETEXTTABLE。

CONTAINS 和 FREETEXT 谓词只能在 SELECT 语句的 WHERE 子句中使用。CONTAINSTABLE 和 FREETEXTTABLE 行集值函数可以在 SELECT 语句的 FROM 子句中使用。

CONTAINS 谓词支持以复杂的语法在具有文本数据的列中搜索以下内容:

  • 一个或多个特定的单词和/或短语(简单词条)。
    在全文搜索中,单词被视为令牌。令牌由相应的断字符所标识,后面是指定语言的语言规则。有效的短语可以由多个词组成,词之间可以有标点也可以没有标点。例如,“croissant”是一个词,“café au lait”是一个短语。这样的词和短语称为“简单词”。
  • 特定词的变形(派生词)。
    例如,搜索词“drive”的变形。如果表中不同的行包含词“drive”、“drives”、“drove”、“driving”和“driven”,则这些词都会出现在结果集中,原因是它们每一个都可以从词 drive 变形而来。
  • 特定单词的同义词形式(同义词库)
    例如,如果将项“{car, automobile, truck, van}”添加到同义词库,则可以搜索单词“car”的同义词库形式。由于这些单词中的每一个都属于包含单词“car”的同义词扩展集,因此在所查询的表中所有包括单词“automobile”、“truck”、“van”或“car”的行都会出现在结果集中。有关同义词库文件的结构的详细信息,请参阅配置同义词库文件
  • 以指定文本开头的词或短语(前缀词)。
    如果是短语,则该短语内的每个词都被看作是一个前缀。例如,词“auto tran”与“automatic transmission”和“automobile transducer”匹配,但与“automatic motor transmission”不匹配。
  • 使用加权值的词或短语(加权词)。
    例如,在某个搜索多个词条的查询中,可以为每个搜索单词指定一个加权值,用于指示它相对于搜索条件中其他单词的重要性。此查询类型的结果将按指定给搜索单词的相对权重首先返回最相关的行。
  • 与另一个词或短语邻近的词或短语(邻近词)。
    例如,查找词“ice”与“hockey”邻近或短语“ice skating”与“ice hockey”邻近的行。

通过使用布尔运算符 AND、OR 和 AND NOT,CONTAINS 谓词可以将这些词中的几个组合起来。例如,在同一个全文索引列中查找所有包含“latte”和“New York-style bagel”的行。通过使用 AND NOT,还可以对词取反,例如 "bagel" and not "cream cheese"。

使用 CONTAINS 时,记住 SQL Server 会从搜索词中去掉干扰词。干扰词是指那些可能经常出现但是在搜索特定文本时没有实际帮助的词,如“a”、“and”、“is”或“the”。有关干扰词的详细信息,请参阅干扰词

请参阅

概念

使用全文搜索查询 SQL Server

其他资源

CONTAINS (Transact-SQL)

帮助和信息

获取 SQL Server 2005 帮助