mssql freetext /包含相当于LIKE'%blog%'

时间:2017-10-02 09:59:25

标签: sql-server

我曾经使用LIKE查询:

WHERE content LIKE '%blog%'

现在我尝试用mssql全文搜索替换它:

WHERE contains(content, 'blog')

但是他们没有返回相同的结果。

第一个还返回包含Blogger的文本。 第二个没有。如何使用全文搜索生成与LIKE '%...%'相同的结果集?

3 个答案:

答案 0 :(得分:0)

全文搜索matches complete words。 LIKE运算符可以匹配部分单词。

答案 1 :(得分:0)

第一个返回博主,因为您在单词的任一侧使用了%。这会在任何时候返回任何带有博客字样的数据。

你真的想要使用

    WHERE content = 'blog'

这与确切的博客相匹配。

答案 2 :(得分:0)

您有三种选择。

选项1:只需使用尾随通配符:

WHERE CONTAINS(content, '"blog*"')

选项2:使用FREETEXT代替CONTAINSFREETEXT为搜索添加了一个单词的屈折形式,这可能是你想要的。

WHERE FREETEXT(content, 'blog')

选项3:扩展CONTAINS。但这有点棘手。 E.g:

WHERE CONTAINS(content, 'FORMSOF(INFLECTIONAL, blog)')