gle*_*gao 5 full-text-search stored-procedures sql-server-2008
我想创建一个存储过程来使用 CONTAINS 进行一些组合关键字搜索,如下所示:
SELECT theContent
FROM FtsTest
WHERE CONTAINS
(theContent,
' FORMSOF (INFLECTIONAL, keyword1) AND FORMSOF (INFLECTIONAL, keyword2)');
Run Code Online (Sandbox Code Playgroud)
并且他的关键字数量可能会有所不同,因此我尝试将整个“FORMSOF... AND FORMSOF .....”子句作为参数传递,将参数声明为 nvarchar(max),但它不会让我这样做它,说参数类型“nvarchar(max)”对于“CONTAINS”的参数 2 无效。
那么,有没有办法让它与sp一起工作?谢谢!
只需将参数 2 声明为containsasnvarchar(4000)而不是,nvarchar(max)它就会起作用。
在此处查看差异:https : //msdn.microsoft.com/en-us/library/ms186939.aspx
2 GB 对于搜索表达式来说有点太多了。
您可以动态构建它并将关键字作为参数传递。使用 sp_executesql 执行允许您利用查询计划缓存,如该问题的答案中所述:
不过,您可能需要注意这个与参数嗅探和全文查询相关的问题:
http://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=510118