2011-01-20 65 views
0

我正在嘗試使用SQL Server 2008和全文搜索來實現AutoComplete搜索框(如google)。Sql Server全文檢索單個結果列在多列中搜索

說我有3列,我想搜索並創建了適當的索引,什麼不是。

的列有產品名稱,ProductNumber和顏色...

對於用戶輸入我想搜索在所有三列可能的匹配,並提出適當的搜索詞。

所以說用戶開始輸入「BL」

ID喜歡返回單列containtng結果,如「黑」,「藍」,它來自於色列以及任何其他兩個欄的比賽(如產品編號:BL2300)

所以基本上我需要搜索多個列並返回一列作爲結果。有沒有辦法做到這一點?

回答

4

修訂運的follwoing評論,如果您創建不同的列的全文索引,那麼你可以簡單的使用CONTAINSFREETEXT把眼光放在其中的一個,所有的人,或其中的一部分。像這樣:

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

如果您想查看包含在FULLTEXT INDEX中的所有列。或者:

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

如果要指定要搜索的列。 如果您需要將結果放在一列中,您必須執行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

肯定,但問題是我需要返回的結果中的一列都不可能來自一個或多個三列 – stephen776 2011-01-20 15:19:56

1

如果您不需要單柱像

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

相關聯,是一個很好的點,從啓動。