我有以下存储过程:-
SELECT Id, Name
FROM FooBars
WHERE CONTAINS(Name, 'FORMSOF(Tesaurus, @query)')
当查询中有一个词时工作正常:例如。foo* 但是当我想要查找多个单词时它会失败。例如。foo* bar*(这意味着任何包含以 foo 开头并以 bar 开头的单词的行)。
我的@query 参数需要什么样的格式才能使用同义词库启用多个单词进行全文搜索?
我有以下存储过程:-
SELECT Id, Name
FROM FooBars
WHERE CONTAINS(Name, 'FORMSOF(Tesaurus, @query)')
当查询中有一个词时工作正常:例如。foo* 但是当我想要查找多个单词时它会失败。例如。foo* bar*(这意味着任何包含以 foo 开头并以 bar 开头的单词的行)。
我的@query 参数需要什么样的格式才能使用同义词库启用多个单词进行全文搜索?
据我所知,如果您想搜索两个或更多表达式,您需要将它们与 AND、OR 或 NEAR 连接起来,如下所示(直接来自 Books Online):
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 () 表达式中正确拼写“同义词库”!:-)
马克