IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Moteur de recherche : alternative à MATCH AGAINST ?


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Inscrit en
    Février 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 10
    Points : 2
    Points
    2
    Par défaut Moteur de recherche : alternative à MATCH AGAINST ?
    Bonjour à tous,

    J'ai besoin pour mon site (PHP/MySQL) de créer un moteur de recherche, parsant une table de collection de CD :
    voici ma table CD :

    id
    artiste
    titre
    reference
    etat
    membreId
    ...

    Indexes :
    primary key sur id
    full text sur (artiste, titre, reference)

    Volume de la table :
    280 000 enregistrements

    Mon moteur de recherche doit rechercher sur les champs Artiste, titre et reference.
    Au debut, j'avais mis des "%like%" et "OR" partout, à bannir bien sur...

    Alors j'ai cherché un peu et j'ai ensuite utilisé MATCH... AGAINST avec les index qui vont bien. Donc là, super ! sauf que.... ma requete ignore les mots de moins de 3 lettres. Dommage pour une recherche sur "U2" !
    Il ignore aussi tous plein de petits mots genre "the", "le", "et", etc... Dommage pour une recherche sur "The Who" !

    Donc là vous me dites : Fastoche, tu modifies la variable ft_stop_word (ou un truc du genre) dans la conf de mySQL. Sauf que... je suis sur un hebergeur mutualisé ! Impossible de modifier cette variable, dixit mon hebergeur.

    Donc j'en viens à remettre en cause mon MATCH AGAINST et à vous demander votre avis !
    Qu'en pensez-vous ? Comment faire pour avoir un truc rapide, pas (trop) usine à gaz, et possible sur un hebergeur mutualisé !?

    Merci pour votre aide !

  2. #2
    Candidat au Club
    Inscrit en
    Février 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Personne pour m'aider ?
    Vais-je devoir redeveloppper un moteur de recherche from scratch ?

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Bonjour,


    Comment faire pour avoir un truc rapide, pas (trop) usine à gaz
    Un moteur full text.

    Celui de MySql à ses limite que se soit au nivaeu des perfs ou des méthodes d'indexations / recherche.

    D'autres solutions existent comme sphinx, solr, ...

  4. #4
    Candidat au Club
    Inscrit en
    Février 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Merci punkoff pour ta reponse, c'est ce que je craignais.

    Sur un serveur mutualisé, il est possible d'utiliser un service comme Sphinx ? (j'arrive à mes limites en admin :/)

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 782
    Points : 52 780
    Points
    52 780
    Billets dans le blog
    5
    Par défaut
    Pourquoi ne passez vous pas à SQL Server Express (with Advanced Services) qui est gratuit et possède l'un des meilleurs moteur d'indexation textuelle ?
    A lire sur le sujet : (comparaison indexation textuelle MySQL : SQL Server) :
    http://blog.developpez.com/sqlpro/p9...text_search_no
    Pour compléter cet article que j'ai écrit, SQL Server 2012 permet aussi la recherche sémantique.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Candidat au Club
    Inscrit en
    Février 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Merci pour cet excellent article !

    Je m'interroge par contre sur :
    - la migration de mes données de MySQL vers SQL server et de l'encodage UTF-8 : rien que d'y penser, j'ai mal a la tete :/
    - la possibilité d'utiliser SQL server sur mon hebergement infomaniak

    Je me suis renseignée un petit peu sur Zend_search_lucene, je vais essayer de faire un POC la dessus pour voir ce que ça donne.
    Est-ce que vous connaissez ? Qu'en pensez vous ?
    Je vais fouiller sur le forum si je trouve des avis la dessus

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 782
    Points : 52 780
    Points
    52 780
    Billets dans le blog
    5
    Par défaut
    Lucene / SOLR est très bien, mais c'est très lors et vous allez passer des journées en instal et mise au point.

    Alors que SQL Server y'a qu'a installer le produit (il faut un serveur avec OS Windows).

    Pour convertir une base de données MySQL en SQL Server, utilisez Power AMC et faite une rétro ingéniérie puis migration. Ceci changera les table MySQL en table SQL Server.

    Pour migrer les données des tables, exportez les au format CLS et importez, les dans SQL Server.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Je n'ai jamais utilisé la solution de SQLServer.

    J'ai déjà mis en place du solr, ca marche bien. (discorgs en site l'utilise par exemple)

    Il est vrai par contre qu'il y a une phase de montée en compétence sur le produit que ce soit niveau paramétrage et modélisation.

  9. #9
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 782
    Points : 52 780
    Points
    52 780
    Billets dans le blog
    5
    Par défaut
    De mémoire j'ai un client sui est passé de SQL Server à Solr/Lucene sur l'indexation textuelle. Bilan : 5 jours de boulot avec un résultat très mitigé :
    • à peu près les mêmes fonctionnalités
    • des requêtes plus rapide et d'autres plus lente

    Bref, ça valait pas le coup apparemment !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  10. #10
    Candidat au Club
    Inscrit en
    Février 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Merci pour vos reponses et vos retours d'experience

    Concernant Lucene, je ne parle pas de l'install Java de Lucene (que je ne pourrais pas effectuer sur mon serveur mutualisé) mais de Zend_Search_Lucene et de sa librairie PHP.

    http://framework.zend.com/manual/1.1....overview.html

    Apparement (mais j'attends d'avoir tester pour etre sure ), pas d'install particuliere, cela fonctionne sur un systeme de fichiers. Cela n'a vraiment pas l'air compliqué, mais au niveau performance, je pense que c'est moins bien que Solr. Cela dit, ça suffira peut etre bien pour mon petit site perso

    Et si ce n'est pas concluant, effectivement, je me tournerais vers un autre moteur de base de donnée.

  11. #11
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    euh solr, c'est juste une interface web / api par dessus lucene... donc niveau perf c'est kiff kiff.

  12. #12
    Candidat au Club
    Inscrit en
    Février 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Me revoila apres mes tests de Zend_Search_Lucene : installation tres simple, une librairie à inclure dans ton projet php.
    Ensuite, la construction des index : tu parses ta table mysql, et ça te genere les index dans un repertoire. Resultat, 6h pour indexer mes 277000 enregistrements......

    Bref ! Maintenant pour la recherche, très simple... qui me fournit un formidable timeout. En modifiant le timeout de php, cela fonctionne mais bien sur, je ne veux pas le faire.

    Zend_Search_Lucene en version PHP, c'est donc pas une bonne idée sur des "gros" volumes.

    Confirmé ici : http://dadabase.de/weblog/archives/2...end-php-lucene

    La vraie version de Lucene Java est sans aucun doute bien meilleure.
    Dommage, je ne pourrais pas tester sous mon hebergeur mutualisé

  13. #13
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    combien de giga à indexer ?

  14. #14
    Candidat au Club
    Inscrit en
    Février 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Oula !
    ma table de 280 000 records fait 70 Mo, sachant que 3 champs / 38 sont des criteres de recherches.


  15. #15
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    c'est ridiculement petit comme volume.

    Z'avez pas de probleme de conf / script ?

  16. #16
    Candidat au Club
    Inscrit en
    Février 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Je suis bien d'accord, ce n'est pas enorme (meme si je ne pensais pas arriver à ces volumes).
    Mais apparement trop pour la version PHP (interprétée et non compilée, cela fait la différence !)

    Coté config, j'ai suivi la doc à la lettre, mais j'ai peut etre loupé qqchose... Je vais refaire un tour dans la doc.

    Dans le lien que j'ai ajouté dans mon autre post (http://dadabase.de/weblog/archives/2...end-php-lucene), le mec n'a que 60 000 documents et il a également un timeout.

    En tout cas, merci pour votre aide

Discussions similaires

  1. recherche dans une base mysql avec match against
    Par devdebutante dans le forum Langage SQL
    Réponses: 1
    Dernier message: 02/07/2008, 14h42
  2. [MySQL] Recherche avec Match Against
    Par johann51 dans le forum PHP & Base de données
    Réponses: 25
    Dernier message: 29/02/2008, 01h01
  3. [MySQL] Moteur de recherche MATCH
    Par syl20_44 dans le forum Requêtes
    Réponses: 3
    Dernier message: 31/07/2007, 10h01
  4. Problème recherche match.. against
    Par pierre_pogo dans le forum Requêtes
    Réponses: 2
    Dernier message: 01/08/2006, 10h45
  5. [Technique] Index, comment font les moteurs de recherche ?
    Par bat dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 25/10/2002, 15h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo