全文搜索条件 'control of' 中的 'of' 附近的语法错误
Posted
技术标签:
【中文标题】全文搜索条件 \'control of\' 中的 \'of\' 附近的语法错误【英文标题】:Syntax error near 'of' in the full-text search condition 'control of'全文搜索条件 'control of' 中的 'of' 附近的语法错误 【发布时间】:2012-03-15 03:51:55 【问题描述】:我有以下WHERE
子句:
WHERE (@Keywords IS NULL
OR (CONTAINS((p.Title, p.Area, p.[Message]), @Keywords))
)
如果@Keywords = 'control'
,则查询成功执行并过滤我的记录
如果@Keywords = 'control of'
,那么我得到以下错误:
全文搜索条件“control of”中“of”附近的语法错误。
为什么会这样?我可以做些什么来解决这个问题?
我使用这种方法而不是使用LIKE
条件的主要原因是我可以搜索多个单词。
【问题讨论】:
【参考方案1】:如果您想准确搜索控制
,请将关键字括在双引号中SET @Keywords = '"control of"'
如果您想搜索 control 和 of,请使用以下命令:
SET @Keywords = 'control AND of'
但服务器可能将 of 视为垃圾词或停用词,因此在这种情况下使用以下内容:
SET @Keywords = 'control AND "of"'
【讨论】:
干杯这防止了错误。但是,仅当其中一行包含“控制”时才会返回结果。我认为这适用于全文搜索,因此它也会获得“控制”? 可能 - 您应该尝试所有 3 个选项并比较结果。并注意 垃圾 词 - 服务器只是从搜索中删除这些词,假设这不有趣且不相关 再次欢呼。但是@Keywords
是从Web 应用程序传递的参数,所以我无法控制文本。将“”替换为“AND”是一个可接受的解决方案吗?像这样进行搜索的常见方法是什么?干杯
对于@Curt 来说有点晚了,我认为他早就解决了这个问题——但在这种情况下,最好的解决方案可能是对原始关键字进行拆分和连接。例如,将关键字条目拆分为一个数组,然后将单词与它们之间的“AND”连接起来,然后在它们之间使用“OR”。然后,您可以运行所有三个查询并以“质量”将它们联合起来。例如,匹配完整短语的结果获得优先级 1,匹配 AND 查询的结果获得优先级 2,“OR”结果获得优先级 3。按优先级排序,您就有了“最相关的第一”结果集以上是关于全文搜索条件 'control of' 中的 'of' 附近的语法错误的主要内容,如果未能解决你的问题,请参考以下文章