В настоящее время я работаю над приложением, где у нас есть база данных SQL-Server, и мне нужно получить полный текстовый поиск, который позволяет нам искать имена людей.
В настоящее время пользователь может ввести a в поле имени, которое ищет 3 разных столбца varchar. Первый, последний, средний имена
Итак, у меня есть 3 строки со следующей информацией.
1 - Phillip - J - Fry
2 - Эми - NULL - Wong
3 - Лев - NULL - Вонг
Если пользователь вводит такое имя, как "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 = '"'[email protected]+'"'
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;
....
Любые идеи...? Почему этот полнотекстовый поиск работает неправильно?