我创建了一个商店程序,它使用%而不是'来获得句子和单词。 '
create proc Mysp_SearchIn_Comments
@text nvarchar(max)
as
set @text = REPLACE(@text ,' ', '%')
select text from tblMediaComments
where Text like
'%'+@text+'%'
它很好但问题是当我搜索类似:'坏男孩' ,结果是评论包含男孩坏了 ,我还需要在坏男孩后时显示评论 我需要像谷歌算法这样的高级搜索!
感谢。
答案 0 :(得分:0)
您需要全文搜索。 它为您提供了大部分精彩的搜索功能。
(来源MSDN)
与全文搜索相比,LIKE Transact-SQL谓词仅适用于字符模式。此外,您不能使用LIKE谓词来查询格式化的二进制数据。此外,针对大量非结构化文本数据的LIKE查询比针对相同数据的等效全文查询慢得多。对数百万行文本数据的LIKE查询可能需要几分钟才能返回;而对于相同的数据,全文查询只需几秒或更短时间,具体取决于返回的行数。
看看这个......
答案 1 :(得分:0)
在这种情况下,您需要使用动态sql。
DECLARE @text NVARCHAR(max) = 'bad after boy'
,@sql NVARCHAR(max)
SET @text = '''%' + REPLACE(@text, ' ', '%'' or [Text] like ''%') + '%''';
SET @sql = 'select text from tblMediaComments where [Text] like ' + @text;
EXEC @sql
查询将如下所示:
select text from tblMediaComments where [Text] like '%bad%' or [Text] like '%after%' or [Text] like '%boy%'