Comment programmer un moteur de recherche efficace ?

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par beenie, 15 Mars 2010.

  1. beenie
    beenie Nouveau WRInaute
    Inscrit:
    18 Août 2008
    Messages:
    41
    J'aime reçus:
    0
    Bonjour,


    J'essaie de mettre en place un moteur de recherche et je me trouve face à deux difficultés :

    -comment faire si les personnes tapent les mots sans accents alors que dans la base de donnée les accents sont représentés sous la forme : é = & eacute; par exemple

    -comment faire pour gagner en pertinence car pour l'instant je construit une requête avec les différents mot trouvés: select * from maTable where description like %mot1% OR description like %mot2%, etc....
    Si j'utilise AND, alors il n'y pas assez de résultat
    SI j'utilise OR j'ai trop de resultat

    Voilà donc je recherche les pistes pour améliorer le moteur, comment les programmez-vous pour qu'ils soient efficaces?
    merci.
     
  2. dorian53
    dorian53 WRInaute passionné
    Inscrit:
    10 Avril 2005
    Messages:
    1 886
    J'aime reçus:
    1
    Salut,

    La franchement ça va être compliqué et surtout très lourd. Il vaut mieux avoir les accents directement.

    Pour récupérer une liste de résultats pertinente comme un moteur de recherche il existe des fonctions propres au SGBD.
    Par exemple, si tu utilises MySQL, il faut que tu indexes ton champ en fulltext et utilise la fonction MATCH / AGAINST.

    http://dev.mysql.com/doc/refman/5.0/fr/fulltext-search.html
     
  3. stopher
    stopher Nouveau WRInaute
    Inscrit:
    10 Mars 2010
    Messages:
    16
    J'aime reçus:
    0
    Salut ,

    Pour la gestion des accents , il te suffit d'utiliser des tables avec des champs encodés en "utf8_general_ci" , mysql ne tiendra plus compte des accents pour tes recherches .

    Ch.
     
  4. jv2759
    jv2759 WRInaute occasionnel
    Inscrit:
    21 Novembre 2008
    Messages:
    428
    J'aime reçus:
    0
    Sinon autre solution si tu as un peux de place dans tes base de donnée et beaucoup de pages c'est de faire un prêt traitement.

    Tu crée 2 table

    motcle
    id
    mot

    liaison
    idmc
    idpage
    score

    - tu récupère le texte de ta pages
    - tu fait un htmldecode
    - puis tu remplace les accents par leur équivalent sans
    - tu découpe en mots
    - tu supprime les mots non significatif (pour alléger et simplifier)
    - tu met tout les mot nouveaux que tu trouve dans la table motcle
    - puis pour chaque mots tu met une entré dans la table liaison. Le score tu peux mettre par exemple le nombre de fois ou le mots aparais dans la pages (a affiner en fonction des besoin)

    Ensuite quand tu fait une recherche, tu fait la même chose :
    - htmldecode
    - remplacer les accents
    - découper en mots
    - supprimer les mots non significatif
    - enfin une recherche avec un = (plus léger qu'un like ou match)

    inconvénient
    - plus lourd à mettre en œuvre
    - obligation de faire un pré-traitement
    - peux retourner mois de résultat
    - consomme de l'espace base

    avantage
    - requette plus légère, surtout si beaucoup de texte à analyser
    - plus grand maitrise de l'algorithme et possibilité d'affiner les score
    - traitement d'autres chose que du texte en base possible.
     
  5. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
    je n'ai jamais trouvé fulltext performant.
    Pour un "bon" moteur de recherches, j'ai vu passer sur wri il y a 2-3 semaines, un post sur sphinx. visiblement il a l'air d'être puissant, mais pas évident à paramétrer
     
  6. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 229
    J'aime reçus:
    0
    Et pourquoi pas ré encoder la recherche de l'utilisateur avec une petite fonction qui échangerait les é par & eacute; et compagnie .. puis effectuer la recherche en utilisant REGEXP au lieu de LIKE ?
    Bon, c'est juste une idée et peut être pas la meilleurs :wink:
     
  7. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
    sauf que dans la BDD, c'est quand même mieux d'avoir directement les caractères accentués et pas sour forme d'entité
     
  8. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 229
    J'aime reçus:
    0
    Je suis daccord et je partais juste de l'hypothèse qu'il a déjà pas mal contenu et qu'il voulait "greffer" un moteur de recherche interne à son site sans avoir besoin de se retaper les corrections ^^.
     
  9. Bacteries
    Bacteries WRInaute passionné
    Inscrit:
    27 Mai 2004
    Messages:
    1 253
    J'aime reçus:
    0
    Sinon utiliser un outils fait pour comme sphinx (open source et très bien fait). Bon c'est pas aussi simple que faire une requête mais c'est extrêmement efficace.
     
Chargement...
Similar Threads - programmer moteur recherche Forum Date
Astuce Créer et programmer une diffusion en direct sur mobile Développement d'un site Web ou d'une appli mobile 17 Novembre 2020
Comment programmeriez-vous un menu avec sous-catégories infinie ? Développement d'un site Web ou d'une appli mobile 17 Mars 2017
Programmer un bouton en AJaX Développement d'un site Web ou d'une appli mobile 27 Novembre 2013
Programmer un site de rencontre Développement d'un site Web ou d'une appli mobile 5 Juillet 2013
impossible programmer date publication d'un statut facebook Facebook 1 Avril 2013
Tuto : comment programmer à l'avance une publication Facebook Facebook 16 Août 2012
Publicité ciblée et cloaking. Comment programmer ça ? Développement d'un site Web ou d'une appli mobile 6 Avril 2012
Programmer a partir d'un pda Développement d'un site Web ou d'une appli mobile 10 Février 2008
Programmer de l'asp avec ?? Développement d'un site Web ou d'une appli mobile 10 Août 2007
[résolu] des soucis pour programmer mon htaccess URL Rewriting et .htaccess 10 Juillet 2006
Programmer un déclancheur de lien Netlinking, backlinks, liens et redirections 14 Mars 2006
programmer en php Développement d'un site Web ou d'une appli mobile 1 Février 2006
Programmer un référencement Débuter en référencement 17 Novembre 2003
Moteur de recherche interne dans mon site Demandes d'avis et de conseils sur vos sites 4 Février 2022
Impossible de décocher la case de demander aux moteurs de recherche Problèmes de référencement spécifiques à vos sites 29 Octobre 2021
Le moteur de recherche neeva.com demande de payer pour rechercher Autres moteurs de recherche connus 23 Août 2021
Mots-clés longue traîne algorithme moteur de recherche Rédaction web et référencement 20 Avril 2021
Robots : n'autoriser que les 4 ou 5 moteurs de recherche principaux Crawl et indexation Google, sitemaps 15 Janvier 2021
Comment bloquer à coup sûr l'indexation par les moteurs de recherche Crawl et indexation Google, sitemaps 7 Décembre 2020
Moteur immobilier Autres moteurs de recherche connus 21 Novembre 2020