rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Php/MySQL Recherche d'images par mots-clés

Posté par Supersoub, le mardi 2 octobre 2007 à 13:54:42
Salut à tous !

Une question qui va sans doute paraître +/- simple à certains...

Je voudrais faire une sorte de moteur de recherche par mot-clés, catégorie et style sur une série d'images et je ne sais pas trop comment construire ma base de données et mes requêtes !

Je travaille avec PHP/MySQL.

Voici l'idée :

- chaque image est liée à plusieurs mots-clés, plusieurs catégories et éventuellement plusieurs styles
- les utilisateurs peuvent saisir autant de mots qu'ils le veulent dans un champ de recherche
- les utilisateurs peuvent choisir une ou plusieurs catégorie dans un menu déroulant
- les utilisateurs peuvent choisir un ou plusieurs styles dans un menu déroulant

=> "mon moteur de recherche" va rechercher dans les mots-clés et affiche les images de la (des) catégories et styles choisis, et ce, selon la pertinence (performance)
(=> il fait également une recherche pour des mots semblables)


Voici les questions :

- Est-ce que je dois faire une table image, une table mot-clés et une table intermédiaire qui lie chaque image à des mot-clés ? (idem pour les catégories et styles)
Si oui, dans le champ "mot-clés" de ma table image, je dois séparer les "clés" renvoyant aux mots-clés par des "," ?

- Est-ce que je dois d'abord faire une requête pour les catégories et styles PUIS sur les mots-clés avec le résultat de cette requête ?
Si oui, faut-il faire un tableau en PHP ou une table en MySQL pour sauvegarder les résultats de la première requête ?
Si non, peut-on faire une seule requête pour le tout ?

- Que dois-je faire pour rendre la recherche la plus rapide et la plus efficace possible sachant qu'à terme il y aura des centaines de mots-clés ?


Voilà en gros le problème ! Je m'y connais un peu en MySQL et je pourrais arriver à faire cette recherche moyennant certainement beaucoup de ligne de codes (inutiles) et une performance plus que moyenne. Je fais donc appel à vous dans l'espoir d'avoir des pistes pour réaliser un moteur de recherche puissant ! (-,

D'avance merci !
(°-°)
Configuration: Windows XP
Firefox 2.0.0.7
Répondre à Supersoub  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Posotaz, le mardi 2 octobre 2007 à 22:17:01
Salut Supersoub,

Comme ça sur le tas je verrais une solution avec 1 seule table et une autre avec 5 :

=> 1 table : champs (url, motscle, categories, styles)
Les champs motscle, categories et styles contiendraient plusieurs valeurs séparées par des ";".
Le problème c'est que ça rompt l'esprit de l'intégrité référentielle.


=> 5 tables :

-> Table images : champs(url, motscle) Oui je mettrais quand même les mots clé séparés par des ";" dans la même table parce que ce n'est pas possible de définir tous les mots clés de manière unique dans une table spécialisée (ça reviendrait à reprendre le dictionnaire de la langue française et plus encore).

-> Table categories : champs(id, nom)

-> Table styles : champs(id, nom)

-> Table cat_images : champs(images.url, categories.id)

-> Table sty_images : champs(images.url, styles.id)

Les deux dernières tables étant des tables de relation liant la première (images) aux deux suivantes (categories et styles).

Voilà comment j'aurais fait la structure personnellement. La requête devrait se faire en une seule fois. Par exemple tu veux les images ayant pour :

- mots clé : gsm, siemens
- catégories : technologie, mobile
- style : moderne

La requête devrait ressembler à :

select url
from images i, categories c, styles s, cat_images ci, sty_images si
where c.id = ci.id
and s.id = si.id
and i.url = ci.url
and i.url = si.url
and c.nom in('technologie', 'mobile') // Ici c'est plutôt un OR
and s.nom like '%moderne%'
and i.motscle like '%gsm%'
and i.motscle like '%siemens%'

On a bien 5 table et 4 jointures, le reste étant des conditions de recherche à construire dynamiquement par programmation en fonction des choix de l'utilisateur. Maintenant je ne sais pas si c'est vraiment optimal, je n'ai jamais eu à faire ce genre de moteurs de recherche personnalisé et multi critères. Mais bon courage !
Répondre à Posotaz

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 Supersoub, le mercredi 3 octobre 2007 à 17:19:39
Je vais un peu voir tout ça !
MErci à toi !!
Répondre à Supersoub
Logiciels pertinents trouvés dans les téléchargements
Télécharger WAMP Server 2.0cWAMP Server - WAMP5 (WAMP signifiant Windows Apache Mysql PHP) est une plateforme de développement Web sous Windows. Il vous permet de...Catégorie: Serveurs
Licence: Freeware/gratuit
Télécharger MySQL 5.0.51bMySQL - MySQL est une des systèmes de gestion de bases de données le plus répandu au monde. Catégorie: Bases de données
Licence: Open Source
Télécharger easyPHP 2.0b1easyPHP - EasyPHP est un environnement de travail packagé comprenant le serveur web Apache, le système de gestion de bases de données...Catégorie: Serveurs
Licence: Open Source
Télécharger PC Inspector File Recovery 4.0PC Inspector File Recovery - Tout comme SoftPerfect File Recovery ou HandyRecovery , ce logiciel est capable de récupérer des fichiers effacés, mais...Catégorie: Sauvegarde
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « Php/MySQL Recherche d'images par mots clés »