全文搜索条件 '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"'

如果您想搜索 controlof,请使用以下命令:

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' 附近的语法错误的主要内容,如果未能解决你的问题,请参考以下文章

确切的短语在 mongodb 全文搜索中无法正常工作

iBoxDB全文搜索原理,演示与代码

sed

sed

Sql Server 2005 全文搜索中的噪声词

ElasticSearch全文搜索引擎整合thinkphp