2009-06-04 108 views
-1

我有以下存储过程: -问题与搜索查询我的SQL Server存储过程

SELECT Id, Name 
FROM FooBars 
WHERE CONTAINS(Name, 'FORMSOF(Tesaurus, @query)') 

工作正常时,有一个词我查询:如。 foo * 但是,当我想要查找多个单词时,它会失败。 例如。 foo * bar *(这意味着任何以foo开头并以bar开头的单词)。

我的@query参数需要什么样的格式才能使用同义词库为全文搜索启用多个单词?

回答

1

据我知道,如果你要搜索两个或多个表情,你需要连接那些要么AND,OR或NEAR,这样的事情(直接从联机丛书):

USE AdventureWorks; 
GO 

SELECT Name 
FROM Production.Product 
WHERE CONTAINS(Name, '"chain*" OR "full*"'); 
GO 

SELECT Description 
FROM Production.ProductDescription 
WHERE CONTAINS(Description, 'bike NEAR performance'); 
GO 

SELECT Description 
FROM Production.ProductDescription 
WHERE ProductDescriptionID <> 5 AND 
CONTAINS(Description, ' Aluminum AND spindle'); 

如果以及如何与您的FORMSOF(...)表达式一起工作对我而言并不明确 - 但我相信您可以快速尝试,不是吗?

SELECT Id, Name 
FROM FooBars 
WHERE CONTAINS(Name, 'FORMSOF(THESAURUS, "foo*")' 
    OR 'FORMSOF(THESAURUS, "bar*")') 

此外,请确保在FORMSOF()表达式中正确拼写“同义词库”! :-)

Marc

+0

我编辑了你的文章,修复了最终的SQL语句,使它正确运行。我花了一些时间确定我收到了好的结果后,还有更多评论。 – 2009-06-04 08:05:09