2011-01-20 2 views
0

J'essaie d'implémenter un champ de recherche de saisie semi-automatique (comme google) en utilisant SQL Server 2008 et la recherche en texte intégral. Dites que j'ai trois colonnes que je veux rechercher et que j'ai créé les index appropriés et ce qui ne l'est pas.Sql Server Recherche plein texte Colonne de recherche unique sur plusieurs colonnes

Les colonnes sont ProductName, ProductNumber et couleur ...

Pour l'entrée utilisateur que je veux rechercher des correspondances possibles entre les trois colonnes et suggérer le terme de recherche appropriée.

dire Ainsi, l'utilisateur commence à taper « Bl »

id aiment retourner une seule colonne des résultats de containtng comme « Black » « Blue » qui viennent de la colonne de couleur et aussi les matchs des deux autres colonnes (comme ProductNumber: BL2300)

Donc, fondamentalement, j'ai besoin de faire une recherche sur plusieurs colonnes et de retourner une seule colonne comme résultat. Y a-t-il un moyen de faire cela?

Répondre

4

MISE À JOUR follwoing commentaire de op Si vous avez créé un index de texte intégral dans différentes colonnes, vous pouvez simplement utiliser CONTAINS ou FREETEXT à regarder un d'entre eux, tous, ou certains d'entre eux. Comme ceci:

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

Si vous voulez voir toutes les colonnes qui sont incluses dans l'index FULLTEXT. ou:

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

Si vous souhaitez spécifier les colonnes que vous souhaitez rechercher. Si vous avez besoin des résultats dans une colonne, vous devrez faire un UNION et faire une recherche pour chaque colonne que vous voulez rechercher.

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

oui mais le problème est que je dois retourner une seule colonne des résultats qui peuvent éventuellement provenir d'un ou plusieurs des trois colonnes – stephen776

+0

@ stephen776 Et comment vous concaténer les multiples possibles résultats de différentes colonnes ?, depuis vous voulez le résultat dans une colonne – Lamak

+0

oui c'est ma question ... – stephen776

1

Si vous n'avez pas besoin d'associer les colonnes simples, quelque chose comme

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

est un bon point de départ.

Questions connexes