Moteur de recherche en SQL server 2008

Moteur de recherche en SQL server 2008 - SQL/NoSQL - Programmation

Marsh Posté le 14-05-2012 à 15:07:51    

Bonjour,
 
Je débute en SQL server, je travaille sous SQL server 2008 et je n'utilise pas le full text search.
Je désire faire un moteur de recherche (il s'agira d'une bête textbox dans laquelle l'utilisateur pourra entrer ce qu'il veut).  
Je dois gérer si l'utilisateur a ou non entré un "et" ou un "ou" parmi les mots.
 
Problème: Étant débutant, je ne vois pas du tout comment faire cela. Il y a énormément de SELECT à faire non, sachant que je dois rechercher dans toute la base de donnée et non pas sur une table seulement?
 
J'aimerais de l'aide sur comment faire cette procédure stockée de recherche, sachant que tous les mots entrés par l'utilisateur sont préalablement enregistrés dans une table de ma base spécialement faite pour ça.
 
Quelqu'un pour m'aider?
 
Merci

Reply

Marsh Posté le 14-05-2012 à 15:07:51   

Reply

Marsh Posté le 23-05-2012 à 13:30:40    

Pour etre honete, une DB c'est pas vraiment fait pour ca.
C'est fait pour stocker des données structurée et pouvoir faire des query pour les recuperer/modifier/effacer.
Le truc c'est qu'on est cencé savoir +- ce qu'on fait et pas devoir chercher un ou plusieurs mots dans toute la DB, donc il n'y a pas vraiment de moyen simple et efficace de le faire.
 
Pour qu'une DB fonctionne bien on doit savoir exactement ce qu'on cherche et exactement ou le trouver.
 
Pour que ton truc fonctionne il faudrai un peut de code avant d'arriver a la DB pour reduire le champ de recherche un maximum, au moins arriver a savoir dans quelle table et sur quelle colonne faire la recherche. Et meme la tu vas avoir des problemes de perfs si tu dois trouver un mot qui peut etre n'importe ou dans une grande chaine de caractere quand ta table a quelques millions de lignes.


Message édité par Oliiii le 23-05-2012 à 13:31:13
Reply

Marsh Posté le 23-05-2012 à 13:47:09    

Y'aurait peut-être intérêt à avoir une table simplifiée précalculée, avec une structure de ce genre :
- ID
- un champ "bloc" texte (insensible à la casse) qui sera une concaténation des champs textes d'un enregistrement d'un table donnée
- un entier représentant le nom d'une table (1 = table titi, 2 = table Toto...)
- en clé étrangère, la clé primaire provenant de la table désignée par le champ précédemment cité
 
Ca veut donc dire qu'à chaque fois qu'un enregistrement est ajouté/modifié/supprimé dans ta BD, faut mette cette table à jour...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed