我正在开发一个 ASP.net 和 Visual Basic 的网站,该网站显示用户生成的产品列表(以下简称“帖子”)。在这个网站上,我有一个搜索框,允许用户更容易找到他的帖子。搜索框旨在允许用户输入特定的关键字,希望能够提供更加个性化的搜索。例如:
在上面的示例中,用户已指定他要搜索具有匹配名称“John Smith”以及且标签为“Crime”和“Suspense”的书籍。
步骤:
为了使第三步正常工作,我想将每个从键值中分离的单词组放入一个表值参数,然后在通配符包围的SqlCommandText中使用该表值参数%”。
换句话说,因为每个键值中的单词数量可能每次都会改变,所以我需要将它们放在某种表值参数中。我也认为我可以将它们串联在一起并直接在查询字符串中使用它们,但我在中途停止,因为它变得有点混乱。
此外,如果你们中的任何人已经为本地搜索框开发了相关性排名算法或知道了一个,那么如果你能指出我正确的方向,我将不胜感激。
提前谢谢。
答案 0 :(得分:1)
所以一些样本数据
create table authors ( id int, name varchar(200) )
insert into authors values (1, 'John Smith')
insert into authors values (2, 'Jack Jones')
insert into authors values (3, 'Charles Johnston')
如果您想使用表格var我们可以制作一个并填充几个搜索词
declare @t table(word varchar(10) )
insert into @t select 'smith' union select 'jones'
现在我们可以选择使用通配符
select authors.* from authors, @t words
where authors.name like '%'+words.word+'%'