基本上我有这样一个表:
CREATE TABLE Person( PersonID int IDENTITY(1,1) NOT NULL, FirstName nvarchar(512) NOT NULL, LastName nvarchar(512) NULL )
我需要根据用户查询找到前n个结果,如下所示:
"Joh Smi"
以下查询返回我需要的结果(我认为).只是不在相关的顺序.
SELECT PersonID, FirstName, LastName FROM Person WHERE FirstName LIKE 'Joh%' OR LastName LIKE 'Joh%' OR FirstName LIKE 'Smi%' OR LastName LIKE 'Smi%'
如果以下名称在数据库中并且我们的用户查询是"Joh Smi",则名称应按以下顺序出现(或类似)
约翰·史密斯
约翰尼史密斯
约翰雅各布
大卫史密森尼
Daniel Johnson
我希望它能像facebook的自动完成朋友搜索一样工作.
那么,如何在SQL Server 2008中返回前n个最相关的行?
我建议实施全文搜索(FTS)有两个原因:
简化查询(不应该需要OR,这将表现不佳)
利用FTS排名功能 - 请参阅此文章