Sql server 2008 靠近'的语法错误;属于';在全文搜索条件下';控制';

Sql server 2008 靠近'的语法错误;属于';在全文搜索条件下';控制';,sql-server-2008,full-text-search,contains,Sql Server 2008,Full Text Search,Contains,我有以下WHERE条款: WHERE (@Keywords IS NULL OR (CONTAINS((p.Title, p.Area, p.[Message]), @Keywords)) ) 如果@Keywords='control',则查询将成功执行并筛选我的记录 如果@Keywords='control of',那么我会得到以下错误: 全文搜索条件“control of”中的“of”附近出现语法错误 这是为什么?我能做些什么来解决这个问题 我之所以

我有以下
WHERE
条款:

WHERE (@Keywords IS NULL
            OR (CONTAINS((p.Title, p.Area, p.[Message]), @Keywords))
        )
如果
@Keywords='control'
,则查询将成功执行并筛选我的记录

如果
@Keywords='control of'
,那么我会得到以下错误:

全文搜索条件“control of”中的“of”附近出现语法错误

这是为什么?我能做些什么来解决这个问题


我之所以使用此方法而不是像使用条件一样使用条件,主要原因是我可以搜索多个单词。

如果要精确搜索控件,请将关键字括在双引号中

SET @Keywords = '"control of"'
如果要搜索控件和,请使用以下命令:

SET @Keywords = 'control AND of'
SET @Keywords = 'control AND "of"'

但服务器可能会将< <强> >作为垃圾或停止字,因此在这种情况下使用以下内容:

SET @Keywords = 'control AND of'
SET @Keywords = 'control AND "of"'

欢呼这已经避免了错误。但是,只有当其中一行包含“control of”时,才会返回结果。我认为这与全文搜索一起工作,这样它也会获得“控制权”?可能是-你应该尝试所有3个选项并比较结果。注意垃圾词-服务器只是从搜索中删除这些词,假设这不是有趣的,也不是相关的欢呼声。但是,
@Keywords
是从Web应用程序传递的参数,因此我无法控制文本。替换“to”和“to”是可以接受的解决方案吗?这样做搜索的常见方式是什么?我想@Curt早就解决了这个问题,但在这种情况下,最好的解决方案可能是对原始关键字进行拆分和连接。例如,将关键字条目拆分为一个数组,然后将单词连接回中间的“AND”,然后再连接到中间的“OR”。然后,您可以运行所有三个查询,并将它们与“质量”合并。例如,匹配完整短语的结果获得优先级1,匹配AND查询的结果获得优先级2,而“OR”结果获得优先级3。按优先级排序,您将得到“最相关的第一个”结果集