我正在尝试在SQL Server中使用全文搜索来搜索名称。我有两列为全文搜索索引 - FirstName和LastName。我希望能找到不准确的比赛。例如,如果有人被命名为“John”,即使用户搜索“jihn”或“jhn”,我也想找到他。我还想搜索多个名称并显示仅匹配其中一个但在RANK上排序的结果。我尝试使用FREETEXTTABLE,但似乎返回的RANK始终为0
SELECT *
FROM FREETEXTTABLE(People, (FirstName, LastName), 'John Smith', 10)
返回名为John Doe,Jane Smith和John Smith的人,但所有人的RANK均为0,并按照他们在数据库中的顺序(通过PK或其他东西)返回。我希望约翰史密斯的排名高于其他名称,因为两个词匹配,而其他两个名称各有一个匹配。还有什么我需要做的才能使排名工作。还有一种方法可以根据它与实际值的接近程度来拼写错误吗?有趣的是,如果我用CONTAINSTABLE替换FREETEXTTABLE并在查询条款之间放置OR,它会工作并提供一些有意义的RANK。我正在尝试使用FREETEXT,因为我预期(可能不正确)它会找到拼写错误或类似名称。