如何使用全文搜索过滤多列

时间:2015-04-17 15:36:04

标签: sql full-text-search

我有一个带有firstname,lastname,city和streetadress列的person表,以及一个用户可以在表中搜索的web gui。

我们假设该表包含4行,如:

Eva, Andersson, Stockholm, Kungsgatan 3
Adam, Johansson, Kiruna, Malmgatan 33a
Eva, Berquist, Kiruna, Gruvgatan 22
Adam, Stenberg, Kiruna, Lappfogdegatan 2

如果用户搜索Eva Andersson斯德哥尔摩,他/她只会对Eva,Andersson,Stockholm,Kungsgatan 3"而不是" Eva,Berquist,Kiruna,Gruvgatan 22"。但是对Adam Kiruna或者只是Eva的搜索应该会有两次点击。

现在的程序如下:

ALTER PROCEDURE [dbo].[getPersons]
@Search nvarchar(50) 

AS
BEGIN

  SET NOCOUNT ON;
  DECLARE @SearchString varchar(100)

  SET @SearchString = REPLACE(@Search, ' ', '*" OR "')
  SET @SearchString = '"'+@SearchString+'*"'

  SELECT * FROM patients as p
  WHERE CONTAINS((Firstname, LasnName, City, Streetadress), @SearchString)
END

但它返回包含任何单词的所有行,以便搜索" Eva Berquist Kiruna"它将返回所有四行。

如何编写程序以获得如上所述的正确结果?

1 个答案:

答案 0 :(得分:0)

这是我的回答,请记住在查询服务器之前需要执行一些程序流程。这里

Select * from Persons_Table where first_name = Eva AND Last_name = ....

这样的事情。