sql-server – SQL Server全文检索
我正在处理一个应用程序,我们有一个SQL Server数据库,我需要一个完整的文本搜索工作,让我们搜索人们的名字.
目前用户可以输入搜索3个不同varchar列的名称字段.第一,最后,中间名 所以说我有3行,具有以下信息. 1 – 菲利普 – J – 炸 2 – Amy – NULL – Wong 3 – Leo – NULL – Wong 如果用户输入诸如“Fry”的名称,它将返回第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 = '"'+@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; .... 有任何想法吗…?为什么这个全文搜索不能正常工作? 解决方法FreeTextTable应该工作.INNER JOIN FREETEXTTABLE(Person,@SearchString) @SearchString应该包含像“Phillip Fry”这样的值(一个长字符串,包含用空格分隔的所有查找字符串). 如果您想搜索Fr或Phil,您应该使用星号:Phil *和Fr * “菲尔”正在寻找“菲尔”这个词. “菲尔*”正在寻找以“菲尔”开始的每一个字 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |