Fichier XML Vs Base de données


Anto1982
WRInaute passionné
WRInaute passionné
 
Messages: 1334
Inscription: 7 Mai 2009

Fichier XML Vs Base de données

Message le Jeu Aoû 26, 2010 18:51

Bonjour à tous!

La problématique est la suivante... J'ai actuellement un petit formulaire de recherche qui fonctionne via AJAX.

Solution actuelle: AJAX
=> A chaque fois que l'utilisateur tape une lettre, cela déclenche un appel à la base de données (MySQL)
=> La requête en elle même est assez simple... Mais assez lourde quand même si bien que certaines fois, le formulaire bogue (échec lors de la connection à la BDD)
=> La requête me permet d'avoir un tri par pertinence des résultats (avec la fonction MATCH - recherche full text) et je limite au 10 premiers résultats (les plus pertinents).

Solution via un fichier texte/xml:
=> Le fichier xml/texte est construit une seule fois (et disponible sur le ftp)
=> A chaque fois que l'utilisateur tape une lettre, je lis ce fichier avec php et je sors les 10 résultats les plus pertinents.
=> ce fichier XML va contenir 3000-4000 lignes
Avantage: je ne fais pas appel à la BDD
Désavantage: je surcharge le serveur...

Je suis sur un hébergement mutualisé

Quelqu'un à une idée de la solution optimale...?

Un grand merci par avance!

Anto

Robinson
WRInaute passionné
WRInaute passionné
 
Messages: 2233
Inscription: 25 Oct 2005

Re: Fichier XML Vs Base de données

Message le Jeu Aoû 26, 2010 19:23

Bonjour,

J'utiliserai la solution ajax avec un fichier texte vu que tu ne fais que le lire et qu'il n'est pas fréquemment modifié.
Mais avec un minimum de lettres avant de lancer la recherche afin de d'éviter des recherches trop vastes.


Anto1982
WRInaute passionné
WRInaute passionné
 
Messages: 1334
Inscription: 7 Mai 2009

Re: Fichier XML Vs Base de données

Message le Jeu Aoû 26, 2010 19:44

Ok pour le fichier texte.
J'ai déjà fait en sorte qu'aucun appel ne soit fait si la taille de la requête est inférieure à 3 caractères.

J'avais donc fichier qui contient ceci:

(en format texte)

Code: Tout sélectionner
Saumon de l'atlantique|http://www.example.com/Saumon_Atlantique
Société A|http://www.example.com/Societe_a
etc... etc...


Ensuite, je me suis dit... trop compliqué, c'est plus simple d'avoir directement les liens...:

Code: Tout sélectionner
<a href="http://www.example.com/Saumon_Atlantique">Saumon de l'atlantique</a>
<a href="http://www.example.com/Societe_a">Société A</a>
etc... etc...


... et de faire une recherche en utilisant un pregmatch sur les ancres des liens...

Le soucis, c'est que je n'arrive pas à trouver l'équivalent d'un MATCH (en full texte) pour ordonner mes résultats par pertinence...

une idée... :)

Merci par avance!

Anto


ricosound
WRInaute impliqué
WRInaute impliqué
 
Messages: 566
Inscription: 25 Oct 2009

Re: Fichier XML Vs Base de données

Message le Ven Aoû 27, 2010 7:14

Anto1982 a écrit:Avantage: je ne fais pas appel à la BDD
Désavantage: je surcharge le serveur...
Anto


Salut.

Heu, ta BDD consomme aussi des ressources sur le serveur. :roll:

Cordialement, Éric.


spout
WRInaute accro
WRInaute accro
 
Messages: 4378
Inscription: 14 Mai 2003

Re: Fichier XML Vs Base de données

Message le Ven Aoû 27, 2010 7:50

Anto1982 a écrit:=> La requête en elle même est assez simple... Mais assez lourde quand même si bien que certaines fois, le formulaire bogue (échec lors de la connection à la BDD)
=> La requête me permet d'avoir un tri par pertinence des résultats (avec la fonction MATCH - recherche full text) et je limite au 10 premiers résultats (les plus pertinents).

Tu as trouvé de quoi venait ces échecs de connexion, "too many connections" ?
Tu as mis un INDEX sur le champ où se fait la requête FULLTEXT ?

Car je ne vois pas trop comment on peut faire une recherche style FULLTEXT sur un fichier (il faut penser aussi aux stopwords).
Peut-être avec un exec() de grep, mais pour ce qui est de limiter aux plus pertinents (relevance en mysql), je ne vois pas.

Pour la solution par fichier XML ou texte, je te conseille plutôt JSON (ou array sérialisé), je trouve que c'est plus facile à traiter des 2 côtés en JS et PHP (et ca prend souvent moins de place que XML).


Anto1982
WRInaute passionné
WRInaute passionné
 
Messages: 1334
Inscription: 7 Mai 2009

Re: Fichier XML Vs Base de données

Message le Ven Aoû 27, 2010 9:34

Heu, ta BDD consomme aussi des ressources sur le serveur.


OK merci pour l'info. (j'y connais rien....)


Tu as trouvé de quoi venait ces échecs de connexion, "too many connections" ?
Tu as mis un INDEX sur le champ où se fait la requête FULLTEXT ?

Oui Probablement "too many connections"
Oui bien sur (je crois que sinon, la requête n'aboutit pas si il n'y a pas d'index fulltext)

Car je ne vois pas trop comment on peut faire une recherche style FULLTEXT sur un fichier (il faut penser aussi aux stopwords).

Moi non plus :-D
Peut-être avec un exec() de grep, mais pour ce qui est de limiter aux plus pertinents (relevance en mysql), je ne vois pas.

=> Je vais creuser un peu cette piste...

Pour la solution par fichier XML ou texte, je te conseille plutôt JSON (ou array sérialisé), je trouve que c'est plus facile à traiter des 2 côtés en JS et PHP (et ca prend souvent moins de place que XML).

=> Interessant, je vais jeter un oeil du coté JSON.

==
L'avantage de la seconde solution (qui n'est pas moindre) est aussi de regrouper les résultats provenant de 2 tables différentes (produits et sociétés) dans un même fichier, ce qui permet d'avoir en une seule recherche des résultats mixtes.


Anto1982
WRInaute passionné
WRInaute passionné
 
Messages: 1334
Inscription: 7 Mai 2009

Re: Fichier XML Vs Base de données

Message le Ven Aoû 27, 2010 9:54

Boaf... trop compliqué ça me c****** les c*****.

Je vais opter pour la solution suivante:

- Une nouvelle table dans MySQL qui contient 2 colonnes (url + titre/mots clés) et qui regroupe mes 2 types de données produits et sociétés. Basta. :-)


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8575
Inscription: 23 Nov 2005

Re: Fichier XML Vs Base de données

Message le Ven Aoû 27, 2010 11:50

Et pourquoi ne pas passer par Lucene pour ton moteur de recherche ?


Anto1982
WRInaute passionné
WRInaute passionné
 
Messages: 1334
Inscription: 7 Mai 2009

Re: Fichier XML Vs Base de données

Message le Ven Aoû 27, 2010 13:24

Et pourquoi ne pas passer par Lucene pour ton moteur de recherche ?


Parceque je n'ai pas envie de perdre 2-7 jours :( (et oui, c'est probablement à moi (non spécialiste) le temps qu'il me faudra pour comprendre, modifier, intégrer et implémenter ce système... qui sera probablement trop lourd pour ce que je veux en faire...: un simple "quick search box"...)

En tout cas merci pour le tuyau!


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : API Google Checkout, Google Co-Op

  • Test data centers Google
    Cet outil vous permet d'afficher sur une seule page les résultats Google effectués sur de nombreux data centers (centres de données).
  • Google Suggest
    Cet outil vous permet d'obtenir une liste de 10 mots ou expressions suggérés par Google sur la base d'un mot que vous fournissez.


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités