sql-server – SQL Server全文检索

前端之家收集整理的这篇文章主要介绍了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 *

“菲尔”正在寻找“菲尔”这个词. “菲尔*”正在寻找以“菲尔”开始的每一个字

原文链接:https://www.f2er.com/mssql/81021.html

猜你在找的MsSQL相关文章