Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
730 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Algorithme de recherche dans une base de données

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Algorithme de recherche dans une base de données

n°696703
la viper
Posté le 09-04-2004 à 16:48:53  profilanswer
 

bonjour,
 
je dois faire dans mon projet un moteur de recherche.
cette recherche doit s'effectuer sur plusieurs tables et sur plusieurs champs donc .. bref sur toute la base quasiement, en fonction d'un mot, une phrase etc ... (genre google).
ma base sera mysql et le langage java/jsp.
Je cherche des algorithmes mais j'ai pas encore trouvé mon bonheur malheureusement :s
 
en reflechissant.. à la limite, la recherche pourra se faire uniquement sur un select mais avec un grand nombre de champs.
 
où puis je trouver un algorithme assez performant là dessus??
 
merci d'avance :)

Message cité 1 fois
Message édité par la viper le 09-04-2004 à 16:49:45
mood
Publicité
Posté le 09-04-2004 à 16:48:53  profilanswer
 

n°696707
kadreg
profil: Utilisateur
Posté le 09-04-2004 à 16:51:05  profilanswer
 

SQL, tu connais ?


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°696719
la viper
Posté le 09-04-2004 à 16:57:02  profilanswer
 

ouhaip ... mais je doute que ca puisse faire tout le travail .. je me trompe p'etre.
si le mot est mal ortographié par exemple ?

n°696730
the real m​oins moins
Posté le 09-04-2004 à 17:05:49  profilanswer
 

mysql: voir les index full text machin
sinon: http://jakarta.apache.org/lucene/ ?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°696826
la viper
Posté le 09-04-2004 à 19:05:11  profilanswer
 

ouhai j'ai deja jeté un oeil sur lucene mais les données seraient pas sur une page ou un fichier plat mais plutot dans une base.
 
vais faire une recherche sur le "index full text machin" ;)  
 
merci

n°696927
la viper
Posté le 10-04-2004 à 08:19:27  profilanswer
 

effectivement j'ai trouvé mon bonheur dans MySQL!! merci bcp :)

n°2053249
big_boss
Posté le 31-01-2011 à 16:14:51  profilanswer
 

la viper a écrit :

effectivement j'ai trouvé mon bonheur dans MySQL!! merci bcp :)


je cherche  un algorithme pour faire un moteur de recherche qui doit s'effectuer sur plusieurs tables et sur plusieurs champs donc .. bref sur toute la base quasiement, en fonction d'un mot, une phrase etc ... (genre google).  
ma base sera ORACLE et le langage j2EE.  
où puis je trouver un algorithme assez performant là dessus??
Merciii

n°2053356
esox_ch
Posté le 01-02-2011 à 10:43:11  profilanswer
 

Sans en savoir plus sur ta structure, difficile à dire.
Par contre j'ai du mal à voir l'utilité de faire une recherche sur toute une base ... Du moins si la base est construite intelligemment


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2053729
willy le k​id
Posté le 02-02-2011 à 15:28:57  profilanswer
 

la viper a écrit :

bonjour,
je dois faire dans mon projet un moteur de recherche.
où puis je trouver un algorithme assez performant là dessus??


 
la requete sera du type
select table1.ID from table1 where table1.champ10 = '<mot-clé>' OR table1.champ11 = '<mot-clé>'
UNION
select table2.ID from table2 where table2.champ20 = '<mot-clé>' OR table2.champ21 = '<mot-clé>' OR table2.champ22 = '<mot-clé>'
UNION ...

tu transformeras peut être les =<mot-clé> en like '%<mot-clé>%'
 
La requête à rallonge + recherche full texte (cas des like) font que c'est extrêmement long.
Il n'y a pas d'algo d'optimisation en sql, sauf solution propriétaire comme par exemple dans mysql.
 
La solution c'est Lucene (ou concurrent) qui créée un index mot clé des pages contenant tel mot clé,  
avec des avantages comme la gestion de l'occurence (les pages contenant le plus le mot clé)  
et le steaming (si tu recherche avec 'arbres' il prend aussi 'arbre' en compte).
 
Lucene navigue dans les pages et créée des index textes (format Lucene) : un mot clé <-> une page html
Tu vas devoir développer une surcouche à Lucene pour lui faire croire qu'il lit des pages html (en fait des champs de table de la BDD)
et qu'il mette dans ses index, non pas une page html, mais le nom de la table + le nom du champ (concaténé abvec séparateur...).
Quand tu feras une recherche, Lucene te sortira le contenu table+champ.
 
 
NB :

  • Lucene est hyper rapide, vraiment. J'ai déjà développé un bousin tel que expliqué ci dessus.
  • Aucun moteur pro n'utilise le sql
  • Mais le sql pourra être suffisant (en temps de réponse) ... disons jusqu'à 5 ou 6 tables de 5 ou 6 champs 'normaux' (50 carac ?), plus un d'environ 256 caractères. Et pas plus de 50 tuples dans chaque table.


 
Bonne chance ... l'optimisation des temps de recherche est vraiment intéressante.  
 
 
 
 
 
 
 
 
 
 
 

n°2053731
willy le k​id
Posté le 02-02-2011 à 15:33:58  profilanswer
 

willy le kid a écrit :


la requete sera du type
select table1.ID from table1 where table1.champ10 = '<mot-clé>' OR table1.champ11 = '<mot-clé>'
UNION
select table2.ID from table2 where table2.champ20 = '<mot-clé>' OR table2.champ21 = '<mot-clé>' OR table2.champ22 = '<mot-clé>'
UNION ...

tu transformeras peut être les =<mot-clé> en like '%<mot-clé>%'
La requête à rallonge + recherche full texte (cas des like) font que c'est extrêmement long.
Il n'y a pas d'algo d'optimisation en sql, sauf solution propriétaire comme par exemple dans mysql.


 
Il y a une autre solution : tu ajoutes un champ (une colonne) champs_de_recherche dans chaque table,
que tu devras renseigner à la main bien sûr.
Tu fais ensuite la recherche uniquement sur cette colonne.
Ca augmente vraiment le temps de réponse (mais pas suffisant pour les gros sgbd).
 
select table1.ID from table1 where table1.champ_de_recherche like '%<mot-clé>%'  
UNION
select table2.ID from table2 where table2.champ_de_recherche like '%<mot-clé>%'
UNION ...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Algorithme de recherche dans une base de données

 

Sujets relatifs
ZOPE / Plone recherche d'infos/tutoriels[POCKETPC] test présence sur base
requete en PHP/MySQL sur deux base differentes ...Temporisation pour base de donnée
[ASP] Recherche de tuto[Jclass]Recherche d'une documentation complete
Recherche de Scriptrecherche sur plusieurs tables MySQL
Archives des donnéesmoteur de recherche
Plus de sujets relatifs à : Algorithme de recherche dans une base de données


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR