I’m developing an application that uses a SQL Server database, and I’m facing issues with getting the full-text search to work for people’s names. The search is supposed to work across three varchar columns for first names, last names, and middle names.
Here’s an example dataset:
- 1: Adam - M - Johnson
- 2: Emma - NULL - Brown
- 3: Chris - NULL - Brown
When I search for ‘Johnson’, it retrieves the first row correctly. However, if I search for ‘Adam Johnson’, ‘Jo’, or ‘A’, I get no results. The same happens when searching for ‘Brown’ versus ‘Emma Brown’.
I have switched between different search functions like CONTAINSTABLE, FREETEXTTABLE, and others, but I’ve noticed no significant changes in outcomes. The query I’m using currently looks like this:
@Name nvarchar(100)
DECLARE @QueryString varchar(100)
SET @QueryString = '"'+@Name+'"'
SELECT P.Lastname, P.Firstname, P.MiddleName
FROM People as P
INNER JOIN CONTAINSTABLE(People, (Lastname, Firstname, Middlename), @QueryString) AS SearchTable
ON P.Id = SearchTable.[KEY]
WHERE SearchTable.RANK > 2
ORDER BY SearchTable.RANK DESC
What might be causing these issues with partial name searches?