2011-01-20 9 views
0

SQL Server 2008とフルテキスト検索を使用して、Googleなどのオートコンプリート検索ボックスを実装しようとしています。Sql Server全文検索単一の結果列複数の列にわたって検索

私が検索したい3つの列があり、適切なインデックスを作成し、作成していないとします。

列は、私はすべての3つの列にわたって可能な一致を検索し、適切な検索用語を提案したいユーザー入力の場合は商品名、ProductNumber、および色...

です。

ので、ユーザが「BL」

IDのような(他の二つの列から色列ともいずれかの試合から来る「ブラック」「ブルー」のような単一の列containtng結果を返すことなどを入力して起動すると言いますProductNumber:BL2300)

基本的に私は複数の列を検索し、結果として単一の列を返す必要があります。これを行う方法はありますか?

答えて

4

を使用すると、異なる列のFULLTEXTインデックスを作成した場合は、OPのfollwoingコメントUPDATED、あなたは簡単な使用CONTAINSまたはFREETEXTは、そのうちの一つ、それらのすべて、またはそれらのいくつかに見てすることができます。このように:

SELECT * 
FROM YourTable 
WHERE CONTAINS(*, @SearchTerm); 

FULLTEXT INDEXに含まれるすべての列を調べる場合は、または:

SELECT * 
FROM YourTable 
WHERE CONTAINS((ProductName, ProductNumber, Color), @SearchTerm); 

検索する列を指定する場合は、 結果が1列に必要な場合は、UNIONを実行して、検索するすべての列を検索する必要があります。

SELECT * 
    FROM YourTable 
    WHERE CONTAINS(ProductName, @SearchTerm) 
    UNION 
    SELECT * 
    FROM YourTable 
    WHERE CONTAINS(ProductNumber, @SearchTerm) 
    UNION 
    SELECT * 
    FROM YourTable 
    WHERE CONTAINS(Color, @SearchTerm) 
+0

はいが、問題は、私は以来、?、おそらく3つの列 – stephen776

+0

stephen776 @そして、どのようにあなたが別の列から可能な複数の結果を連結なりの一つ以上から来ることができた結果の単一の列を返す必要がありますあなたは結果を一つの列にしたいです – Lamak

+0

はい、それは私の質問です... – stephen776

1

あなたは、単一の列を関連付ける必要がない場合は、

SELECT * FROM Table WHERE ProductName LIKE @SearchTerm + '%' 
UNION 
SELECT * FROM Table WHERE ProductNumber LIKE @SearchTerm + '%' 
UNION 
SELECT * FROM Table WHERE Color LIKE @SearchTerm + '%' 

のようなものから始めるのが良い点です。

関連する問題