我目前正在开发一个应用程序,我们有一个 SQL-Server 数据库,我需要进行全文搜索,以便我们搜索人名。
目前,用户可以在搜索 3 个不同 varchar cols 的名称字段中输入 a。名、姓、中间名
所以说我有 3 行包含以下信息。
1 - 菲利普 - J - 弗莱
2 - 艾米 - NULL - 黄
3 - 狮子座 - NULL - 黄
如果用户输入诸如“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;
....
有任何想法吗...?为什么这个全文搜索不能正常工作?