我目前正在研究一个我们有SQL-Server数据库的应用程序,并且我需要得到一个全文搜索工作,使我们能够搜索人名。SQL Server全文搜索
当前用户可以输入一个名称字段,该字段可以搜索3个不同的varchar cols。第一,最后,中间名
所以说我有3行与以下信息。
1 - 菲利普 - J - 弗莱
2 - 艾米 - NULL - 黄
3 - 利奥 - NULL - 黄
如果用户输入一个名称,如 '弗莱',它会返回第1行。但是,如果他们进入Phillip Fry,Fr或Phil,他们什么也得不到。我不明白为什么要这么做。如果他们搜索黄,他们会得到第2和第3排,如果他们搜索艾米黄他们什么也没有得到。
当前查询使用的是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 = '"'[email protected]+'"'
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;
....
任何想法......?为什么此全文搜索无法正常工作?
请注意,作为通配符的星号只有在搜索词的**结尾**处使用时才起作用。搜索词开头的星号被全文搜索引擎忽略。 – RSW 2013-01-26 16:05:31