SQL Server自由文本搜索在存储过程中包含多个搜索词

时间:2013-12-13 17:19:45

标签: sql-server stored-procedures full-text-search

我正在尝试进行自由文本搜索。基本上,搜索字符串被发送到存储过程,在那里它执行自由文本搜索并返回结果。

如果我搜索red flag,我想返回与红色和旗帜文本相匹配的结果。

以下是我用来返回结果的查询。

select * from customer where FREETEXT (*, '"RED" and "flag"')

这并没有给我想要的结果。相反,这个给出了期望的结果。

select * from customer where FREETEXT (*, 'RED') AND FREETEXT (, 'FLAG')

我的问题是因为它在存储过程中,我将无法创建第二个查询where子句。我认为两个查询都应该返回相同的结果。我在这里做错了吗?

1 个答案:

答案 0 :(得分:0)

您需要使用CONTAINS代替FREETEXT

select * from customer where CONTAINS(*, '"RED" and "flag"')

CONTAINS支持布尔语法。 FREETEXT没有 - 它更像是一种自然语言类型的搜索。