私は現在、SQL Server データベースがあるアプリケーションに取り組んでおり、人の名前を検索できる全文検索を機能させる必要があります。
現在、ユーザーは 3 つの異なる varchar 列を検索する名前フィールドに a を入力できます。名、姓、ミドルネーム
したがって、次の情報を含む 3 つの行があるとします。
1 - フィリップ - J - フライ
2 - エイミー - ヌル - ウォン
3 - レオ - ヌル - ウォン
ユーザーが「Fry」などの名前を入力すると、行 1 が返されます。ただし、Phillip Fry、Fr、または Phil と入力すると、何も取得されません..そして、なぜこれを行っているのかわかりません。Wong を検索すると、行 2 と 3 が得られ、Amy Wong を検索しても何も得られません。
現在、クエリは 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;
....
何か案は...?この全文検索が正しく機能しないのはなぜですか?