2010-12-10 45 views
1

Nous mettons en œuvre la recherche de texte intégral dans notre projet. C'est comme la fonctionnalité de recherche google pour trouver des enregistrements accros plusieurs tables. Notre base de données est la structure est que nous avonsSQL Server 2008- Recherche plein texte sur plusieurs tables avec '+ (et)', '- (et non)' et 'espace (ou)'

Personne personID FirstName LastName Date de naissance

PersonAddress AddressID personID Adresse1 Address2

PersonPhoneNo PhoneID PersonID PhoneNo

La table Person a une relation à plusieurs avec PersonAddress et PersonPhoneNo. Maintenant, notre problème est que nous voulons rechercher comme 'xyz + new york'. Et la recherche plein texte traiter cette personne comme xyz rester à New York, ou le prénom de la personne est xyz et le nom de famille est new york, ou l'adresse de la personne est xyz et le téléphone est new york. Pour cela, nous identifions une approche. Pour cela, nous devons faire des colonnes composées ayant une combinaison de 'Nom + Adresse1 + Adresse2 + TéléphoneNo'. Et devez ajouter ce catalogue de recherche en texte intégral colonne colonne. Nous avons fait une vue en utilisant la jonction de plus de trois colonnes. et ajoutez cette colonne de vue dans le catalogue de recherche de texte intégral.

Mais encore le problème est que l'affichage ne peut pas prendre en charge la jointure externe si nous allons créer un index de texte intégral dessus.

Répondre

0

Je voudrais utiliser Lucene comme un moteur de texte intégral pour cela. Vous pouvez facilement stocker plusieurs champs dans un document lucene, ce qui vous permet de faire des recherches comme "xyz city: london".

Êtes-vous obligé d'utiliser une solution pure-mssql? Essayez de créer des vues indexées auxquelles vous appliquez votre index de texte intégral.

+0

Mais dans le problème d'affichage d'index, nous ne pouvons pas utiliser la jointure externe gauche dans cela. Nous avons un à plusieurs relation .. Alors s'il vous plaît donnez-moi une idée de la façon de créer une vue d'index sur de telles tables. – ArpanDesai

1

Nous avons trouvé cette solution: Nous avons créé une table de référentiel et inséré des données en utilisant un mécanisme de déclenchement et nous avons créé des colonnes calculées sur cette table qui combinait toutes les colonnes. Ensuite, nous avons créé un index de texte intégral sur ces colonnes. donc ce travail fonctionne bien pour nous. Juste vous devez trouver le mécanisme de déclenchement approprié selon votre application et base de données normalisée.