Recherche par SQL ou par algo PHP ? [Résolu]

Signaler
Messages postés
2215
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009
-
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
-
Bonjour à tous,

Une petite question : avec la complexification de ma base de données, est-ce que je peux envisager, plutot que d'effectuer des recherche en utilisant des requetes SQL avec des mots clés comme "LIKE" etc.., d'utiliser à la place un algorithme PHP. ça me permettrait de pouvoir faire une recherche bien plus puissante, précise et évolutive.
La ou je me pose des questions, c'est est-ce que ça sera assez rapide ? (de parcourir tous les éléments de la BDD, jusqu'à 1000 environ on va dire) est-ce que ça va pas ralentir le serveur, manger trop de CPU ??
Je me demande comment font les "gros" sites, soient ils programment leurs algo de recherche en PHP (ou autre) soit ils ont des requetes SQL de malade lol (ce qui doit aussi ralentir les recherche d'ailleurs)

Merci pour vos réponses

- MadMatt -
Vb System Library


www.choisir-une-entreprise.com

8 réponses

Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Hello,

tu devrais jeter un oeil aux index FULLTEXT.
http://dev.mysql.com/doc/refman/5.0/fr/fulltext-search.html si tu es sur mysql.
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Hello,

tu penses à récupérer toute ta base et SQL et travailler dessus en php ?
Ce que je peux déjà dire c'est que les hébergeurs qui ont la BDD sur un autre serveur que le script ne vont pas apprécier...
Pour le reste je ne sais pas, mais ça m'intéresse aussi
Messages postés
2215
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009
1
Ben la BDD est bien hébergée sur un autre serveur (je pense, sauf erreur de ma part).

Ce que je veux dire, c'est faire la recherche en script PHP plutot qu'en requete SQL. Par exemple en SQL on va faire "WHERE Champ1 LIKE %texte à rechercher%" alors que la je récupère tous les champs de la BDD (ou je peux faire une petite présélection à la limite avec quelques clauses WHERE), et puis en PHP je fais un algorithme qui va trier les résultats correspondants à ma recherche (en utilisant des fonctions de PHP quoi.

- MadMatt -
Vb System Library
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
7
Salut,

Sous la pression de mes clients, j'ai du refaire une methode de recherche...

La précédante, basée sur le classique FULLTEXT de MySQL n'était pas assez satisfaisante. Scores incompréhensibles et imprévisibles... Pas vraiment précis... Pas prévu pour le français.

Après une vague recherche, j'ai opté pour Lucene !!!
http://framework.zend.com/manual/en/zend.search.lucene.html

Le principe est de créer une base de données uniquement dédié à l'indexation et à la recherche. C'est pas très évident à utiliser au première abord, mais au final... Tout est configurable dans ce moteur de recherche : algo de scoring, et sous quelle forme sont stoqués les champs à rechercher.

Bref, en rentrant dans cette index mes champs sous formes normale, canonisées (pas de mot usuel, forme canonique des mots cf. stemmer, et forme phonétique cf. Soundex). Le résultat est très bon...

C'est une idée que je te donne. Mais aussi pas mal de boulot!

A+

http://www.catb.org/%7Eesr/faqs/smart-questions.html
Messages postés
2215
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009
1
Excellent les index FullText ! je connaissais pas du tout merci beaucoup, effectivement ça répond assez à ma question.

Juste une question pour la route, si je passe une colonne en FullText, j'ai pas trop compris l'histoire d'une autre colonne qui doit servir d'index ? Il faut que je crée une colonne supplémentaire par champ en FullText ?

Merci

- MadMatt -
Vb System Library
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Moi je garderai Lucene en mémoire, ça a l'air surpuissant... merci pour l'info :)
Messages postés
2215
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009
1
Lucene est effectivement très intéressant, mais je garde ça pour quand j'aurais plus d'enregistrements, et du temps à y consacrer :)
Merci pour l'info

Sinon si quelqu'un aurait des explications à propos de l'INDEX des colonnes FULLTEXT, je vois pas pourquoi il devrait y avoir un index. A quoi ça sert ? Comment on le crée ? ou ça ? héhé, merci

- MadMatt -
Vb System Library
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
38
Salut

une chose est sure : les traitements doivent etre faits cote mysql et pas php...

<hr />une recherche sur exalead vous aurait peut-etre evite de poser cette question

In a dream, I saw me, drop dead...
U were there, U cried...
It was just a dream,
if I die, U won't cry, maybe, U'll be happy