我目前在一个应用程序上工作,我们有一个SQL-Server数据库,需要使全文搜索功能正常工作,以便我们可以搜索人名。
目前用户可以输入一个名称字段来搜索3个不同的varchar列:姓、名和中间名。
例如,如果我有以下信息的3行:
1 - Phillip - J - Fry
2 - Amy - NULL - Wong
3 - Leo - NULL - Wong
如果用户输入名称“Fry”,它将返回第1行。但是,如果他们输入Phillip Fry、Fr或Phil,他们将什么也得不到...我不明白为什么会这样。如果他们搜索Wong,他们将得到第2和第3行,如果他们搜索Amy Wong,他们还是什么都得不到。
目前的查询使用CONTAINSTABLE,但我已经尝试使用FREETEXTTABLE、CONTAINS和FREETEXT等其他方法,结果没有明显的区别。我倾向于使用表方法,因为它们返回与排名相同的结果。
以下是查询语句。
....
@Name nvarchar(100),
....
--""s added to prevent crash if searching on more then one word.
DECLARE @SearchString varchar(100)
SET @SearchString = '"'+@Name+'"'
SELECT Per.Lastname, Per.Firstname, Per.MiddleName
FROM Person as Per
INNER JOIN CONTAINSTABLE(Person, (LastName, Firstname, MiddleName), @SearchString)
AS KEYTBL
ON Per.Person_ID = KEYTBL.[KEY]
WHERE KEY_TBL.RANK > 2
ORDER BY KEYTBL.RANK DESC;
....
有什么想法吗?为什么这个全文搜索功能不能正常工作?