如果查询中使用FREETEXT 是不是 表的索引就不起作用了 ,谢谢大家
SELECT * FROM A WHERE  FREETEXT(CodeAirPortDest,@CodeAirportDest)  

解决方案 »

  1.   

    没用过这个功能,看看帮助吧有时间再研究FREETEXT
    是个谓词,用于搜索含有基于字符的数据类型的列,其中的值符合在搜索条件中所指定文本的含义,但不符合表达方式。使用 FREETEXT 时,全文查询引擎内部将 freetext_string 拆分为若干个搜索词,并赋予每个词以不同的加权,然后查找匹配。语法
    FREETEXT ( { column | * } , 'freetext_string' )参数
    column已经注册全文检索的特定列的名称。具有字符串数据类型的列是可进行全文检索的有效的列。*指定所有已注册用于全文检索的列均用于搜索给定的 freetext_string。 freetext_string要在指定的 column 中进行搜索的文本。可以输入任何文本,包括单词、短语或句子。所输入的文本与语法无关。注释
    使用 FREETEXT 的全文查询没有使用 CONTAINS 的全文查询精度高。Microsoft® SQL Server™ 全文检索引擎识别重要的字词和短语。保留关键字或通配符字符都不具有特殊含义,而它们指定在 CONTAINS 谓词的 <contains_search_condition> 参数中时则通常具有含义。 当兼容性级别小于 70 时,FREETEXT 不被识别为关键字。有关更多信息,请参见 sp_dbcmptlevel。 示例
    A. 使用 FREETEXT 搜索包含指定字符值的单词
    下例搜索产品描述中含有与 bread、candy、dry 和 meat 相关的词语的所有产品类别,如 breads、candies、dried 和 meats 等。USE Northwind
    GO
    SELECT CategoryName
    FROM Categories
    WHERE FREETEXT (Description, 'sweetest candy bread and dry meat' )
    GOB. 在全文检索中使用变量
    下例使用变量而不是特定的搜索术语。USE pubs
    GO
    DECLARE @SearchWord varchar(30)
    SET @SearchWord ='Moon'
    SELECT pr_info FROM pub_info WHERE FREETEXT(pr_info, @SearchWord)
      

  2.   

    是这样,这个CodeAirportDest列确实有全文索引,但是我 WHERE like @CodeAirportDest +‘%’,索引就起作用,没有进行全表扫描。但是 用 FREETEXT 就会造成全表扫描