私は現在、SQLサーバデータベースを持っているアプリケーションを開発中です。人々の名前を検索できる完全なテキスト検索が必要です。SQL Serverの全文検索
現在、ユーザーは3つの異なるvarchar colを検索する名前フィールドにaを入力できます。最初、最後、中間の名前
私は次の情報で3行があると言う。
1 - フィリップ - J - フライ
2 - エイミー - NULL - ウォン
3 - レオ - NULL - ウォン
ユーザは、 'フライ' と名前を入力した場合には、うしかし、彼らがフィリップ・フライ(Phillip Fry)、またはフィル(Fr)、またはフィル(Phil)に入ると、何も得られません。もし彼らがWongを検索すると、Amy Wongを検索すると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;
....
いずれかのアイデア...?なぜこの全文検索が正しく機能していないのですか?
ワイルドカード文字としてのアスタリスクは、検索語の** end **で使用する場合にのみ機能することに注意してください。検索語の先頭にあるアスタリスクは、全文検索エンジンによって単純に無視されます。 – RSW
答えをありがとう。あなたはリラとベンダーを忘れた。 Luceneを使うことはできますか? –