Moteur de recherche interne

Discussion dans 'Administration d'un site Web' créé par milkiway, 12 Octobre 2004.

  1. milkiway
    milkiway WRInaute accro
    Inscrit:
    3 Février 2004
    Messages:
    4 238
    J'aime reçus:
    0
    Bonjour,
    je monte un site qui est destiné a recevoir une grosse quantité d"informations piochées dans une base de donnée, pensez vous qu'il est plus intelligent de coder moi même un moteur de recherche en PHP ou alors d'en prendre un tout fait ?
    Dans ce cas que me conseillez vous ?

    Ce qui est très important c'est qu'il FAUT qu'il soit :
    - rapide
    - léger, très léger
    - efficace (...)
    Merci !
     
  2. Dr DLP
    Dr DLP WRInaute impliqué
    Inscrit:
    29 Juin 2003
    Messages:
    527
    J'aime reçus:
    0
    Si c'est sur UNE base de données qui t'appartient, je te conseille de le coder toi même.
    Après ça dépend du type de résultats que tu veux sortir.
     
  3. jeromax
    jeromax WRInaute impliqué
    Inscrit:
    12 Novembre 2003
    Messages:
    898
    J'aime reçus:
    0
    J'en ai fait un petit sur mon site. Le problème, c'est la pertinence des réponses.... :?
     
  4. Dr DLP
    Dr DLP WRInaute impliqué
    Inscrit:
    29 Juin 2003
    Messages:
    527
    J'aime reçus:
    0
    Pour ma part j'utilise cinq requêtes SQL pour une recherche, par ordre de pertinence(recherche d'infos sur un site) :
    • Nom exact
    • Nom + description + contenu approchant
    • Nom + descrîption approchant
    • Nom approchant
    • Quasiment aléatoire
    Si ça t'intéresse milkiway, je te mettrais ça de retour chez moi :)
     
  5. shrom
    shrom WRInaute impliqué
    Inscrit:
    5 Juillet 2004
    Messages:
    784
    J'aime reçus:
    0
    Certains SGBD ( PostgreSQL, MySQL, Oracle ... ) ont une fonction de recherche Full Text et trie automatiquement selon la pertinence.
     
  6. Dr DLP
    Dr DLP WRInaute impliqué
    Inscrit:
    29 Juin 2003
    Messages:
    527
    J'aime reçus:
    0
    C'était sous-entendu pour moi :)
    Malheuresement rajouter des index FULL TEXT ralentit les recherches :|
     
  7. Zang
    Zang WRInaute impliqué
    Inscrit:
    16 Septembre 2004
    Messages:
    891
    J'aime reçus:
    0
    tiens ca minteresse aussi un moteur de recherche interne
     
  8. milkiway
    milkiway WRInaute accro
    Inscrit:
    3 Février 2004
    Messages:
    4 238
    J'aime reçus:
    0
    Merci pour les réponses !

    Ca m'intéresse beaucoup :D
    C'est vraiment sympa de ta part.
    J'attend ça ! Merci
     
  9. Dr DLP
    Dr DLP WRInaute impliqué
    Inscrit:
    29 Juin 2003
    Messages:
    527
    J'aime reçus:
    0
    Je te livre le php tel quel :
    Code:
    <?php
    
    require('common.php');
    require('configs/functions_common.php');
    
    function already_displayed ( $seeked_site_id, $seeked_array )
    {
    	for ( $h = 0 ; $h < count($seeked_array); $h ++)
    	{
    		if ( $seeked_site_id  == $seeked_array[$h][0] )
    		{
    			return true;
    		}
    	}
    	return false;
    }
    
    $search_query = strtolower(trim(htmlspecialchars($_GET['search_query'])));
    $where = (isset($_GET['sub_cat_id'])) ? 'AND site_cat='.intval($_GET['sub_cat_id']) : '';
    
    // Etape absolue, recherche d'un titre de site correspondant à la requête
    $sql = mysql_query("SELECT site_id, site_link, site_cat, site_name, site_desc FROM easy_links_sites WHERE LOCATE('$search_query',site_name) > 0 $where") or die ("Fhtagn : " . mysql_errno()." : ".mysql_error()."<br />".$sql);
    while( $sites = mysql_fetch_row($sql) )
    {
    	$sites_to_show[] = $sites;
    }
    
    // Deuxième étape absolue, la recherche croisée titre/description/contenu
    // Cette recherche est la plus puissante puiqu'elle assure une très importante pertinence de la requête
    $sql = mysql_query("SELECT site_id, site_link, site_cat, site_name, site_desc, site_contents, MATCH (site_name,site_desc,site_contents) AGAINST ('$search_query') AS score FROM easy_links_sites WHERE MATCH (site_name,site_desc,site_contents) AGAINST ('$search_query') $where ORDER BY score DESC") or die ("Fhtagn : " . mysql_errno()." : ".mysql_error()."<br />".$sql);
    while( $sites = mysql_fetch_row($sql) )
    {
    	if ( !already_displayed($sites[0], $sites_to_show) )
    	{
    		$sites_to_show[] = $sites;
    	}
    }
    
    // Première étape relative, la recherche croisée titre/description
    $sql = mysql_query("SELECT site_id, site_link, site_cat, site_name, site_desc, site_contents, MATCH (site_name,site_desc) AGAINST ('$search_query') AS score FROM easy_links_sites WHERE MATCH (site_name,site_desc) AGAINST ('$search_query') $where ORDER BY score DESC") or die ("Fhtagn : " . mysql_errno()." : ".mysql_error()."<br />".$sql);
    while( $sites = mysql_fetch_row($sql) )
    {
    	if ( !already_displayed($sites[0], $sites_to_show) )
    	{
    		$sites_to_show[] = $sites;
    	}
    }
    
    // Deuxième étape relative, la recherche croisée description/contenu
    $sql = mysql_query("SELECT site_id, site_link, site_cat, site_name, site_desc, site_contents, MATCH (site_desc,site_contents) AGAINST ('$search_query') AS score FROM easy_links_sites WHERE MATCH (site_desc,site_contents) AGAINST ('$search_query') $where ORDER BY score DESC") or die ("Fhtagn : " . mysql_errno()." : ".mysql_error()."<br />".$sql);
    while( $sites = mysql_fetch_row($sql) )
    {
    	if ( !already_displayed($sites[0], $sites_to_show) )
    	{
    		$sites_to_show[] = $sites;
    	}
    }
    
    // Troisième étape relative, la requête "ressemble" au titre d'un site
    $sql = mysql_query("SELECT site_id, site_link, site_cat, site_name, site_desc, site_contents, SUBSTRING(SOUNDEX(site_name),1,2) AS cosmos , SUBSTRING(SOUNDEX('$search_query'),1,2) AS spatio FROM easy_links_sites WHERE SUBSTRING(SOUNDEX(site_name),1,2) = SUBSTRING(SOUNDEX('$search_query'),1,2) $where") or die ("Fhtagn : " . mysql_errno()." : ".mysql_error()."<br />".$sql);
    while( $sites = mysql_fetch_row($sql) )
    {
    	if ( !already_displayed($sites[0], $sites_to_show) )
    	{
    		$sites_to_show[] = $sites;
    	}
    }
    
    $template->assign("sites",$sites_to_show);
    
    template_display('search.tpl');
    
    ?>
    La requête de création de la table ( le seul truc important ce sont les index )
    L'affichage des résultats se fait via Smarty.
    Si tu veux voir ce que ça donne en action : -http://jeux-gratuits-en-ligne.com/annuaire-jeux/ .
    Si un résultat ne te semble pas pertinent, jette un oeil à l'url donnée, le contenu de la page est non affiché mais pris en compte.
     
  10. Oncle Tom
    Oncle Tom WRInaute impliqué
    Inscrit:
    31 Mars 2003
    Messages:
    720
    J'aime reçus:
    0
    ^^ pour faciliter la recherche sur tout mon site j'ai préféré utiliser Google. Ca a l'avantage de mettre l'utilisateur dans un bain qu'il connait déjà. Certes c'est moins personnalisé mais dans la mesure où c'est une recherche globale au site, c'est pas gênant.
     
  11. milkiway
    milkiway WRInaute accro
    Inscrit:
    3 Février 2004
    Messages:
    4 238
    J'aime reçus:
    0
    Merci bcp DLP mais je suis novice en SQL alors je crois que je vais regarder la doc en profondeur pour comprendre ton code !

    The jEDI : oui mais ça nécessite une indexation par GG
     
  12. Juxener
    Juxener WRInaute discret
    Inscrit:
    17 Mars 2004
    Messages:
    189
    J'aime reçus:
    0
    Fait ton propre script, c le seul moyen d'avoir qqch de fiable et de parfait !

    PS: Pour le mien, aucune requête SQL :p !
     
  13. milkiway
    milkiway WRInaute accro
    Inscrit:
    3 Février 2004
    Messages:
    4 238
    J'aime reçus:
    0
    En gros ce sont des fonctions PHP ou des fonctinos SQL lors des requêtes qu'il faut utiliser ?
     
  14. Juxener
    Juxener WRInaute discret
    Inscrit:
    17 Mars 2004
    Messages:
    189
    J'aime reçus:
    0
    En principe un moteur ça se joue sur un BDD (couramment MySQL), donc avec des requêtes SQL (appellées par des fonctions PHP d'ailleurs :d).
    Aprés, pour ceux qui préfére utiliser SQL le moins possible, c possible sans... Avec une gestion par tableaux PHP, des sortes de fausses BDD.
     
  15. milkiway
    milkiway WRInaute accro
    Inscrit:
    3 Février 2004
    Messages:
    4 238
    J'aime reçus:
    0
    Je me suis mal exprimé,
    mieux vaut utiliser les fonctions de recherche de MySQL ou celles de PHP ?
     
  16. Juxener
    Juxener WRInaute discret
    Inscrit:
    17 Mars 2004
    Messages:
    189
    J'aime reçus:
    0
    Bah je comprend pas exactement...

    De toutes manières, même pour rechercher sur un BDD SQL tu utiliseras PHP pour exécuter les requêtes SQL ... et à l'inverse tu ne pourras pas rechercher sur une BDD SQL sans utiliser les requêtes SQL.
     
  17. Verticrawl
    Verticrawl Nouveau WRInaute
    Inscrit:
    2 Septembre 2005
    Messages:
    12
    J'aime reçus:
    0
    Moteur de recherche dédie pour site web

    Bonjour,

    Plutot que de réinventer la roue, il est parfois interessant de déléguer le developpement de moteur de recherche a des spécialistes.

    Les problemes que vous vous posez (et ceux que vous allez découvrir ;-) sont impressionnants, exemple a l'appui.

    Coté BDD :
    - optimisation des recherches sur plein-texte et booleen..
    - volume de donne quand gros systeme de recherche et gros trafic utilisateur

    Coté pertinence :
    - algo de ranking...Si vous ne connaissez pas "l'inf. Baysienne" bonne chance !
    - stopword, suggestion orthographique, suggestion synonymique, taxinomie (classement des documents)

    Coté documents indexable :
    tant que vous rester sur le contenu de votre BDD..RAS
    Mais des que votre client vous parle d'indexer des pdf, des images, des rasters, des sons, des videos...vous allez lui dire "heu bas je vais voir ;) )
    Coté evolutivité :
    - les mains dans la graisse presque tout le temps.

    Je vous suggere donc de regarder du coté de http://www.verticrawl.com/ car nous avons developpé une solution online d'indexation plein-texte et taxinomique qui merite d'etre presentée. Son développement a mis 5 ans et elle devrait s'affirmer comme une alternative tres interessante.

    Son prix : A partir de 10 euros par mois...et vous gardez la maitrise complete de votre site sans connexion a votre bdd..

    Elle est deja utilisée par des moteurs comme http://www.fraggo.com et comme http://www.123emploi.com/

    Pourquoi réinventer la roue ?

    vos remarques sur mon mail.

    JFL
     
  18. Verticrawl
    Verticrawl Nouveau WRInaute
    Inscrit:
    2 Septembre 2005
    Messages:
    12
    J'aime reçus:
    0
    Bonjour,

    Plutot que de réinventer la roue, il est parfois interessant de déléguer le developpement de moteur de recherche a des spécialistes.

    Les problemes que vous vous posez (et ceux que vous allez découvrir ;-) sont impressionnants, exemple a l'appui.

    Coté BDD :
    - optimisation des recherches sur plein-texte et booleen..
    - volume de donne quand gros systeme de recherche et gros trafic utilisateur

    Coté pertinence :
    - algo de ranking...Si vous ne connaissez pas "l'inf. Baysienne" bonne chance !
    - stopword, suggestion orthographique, suggestion synonymique, taxinomie (classement des documents)

    Coté documents indexable :
    tant que vous rester sur le contenu de votre BDD..RAS
    Mais des que votre client vous parle d'indexer des pdf, des images, des rasters, des sons, des videos...vous allez lui dire "heu bas je vais voir ;) )
    Coté evolutivité :
    - les mains dans la graisse presque tout le temps.

    Je vous suggere donc de regarder du coté de http://www.verticrawl.com/ car nous avons developpé une solution online d'indexation plein-texte et taxinomique qui merite d'etre presentée.

    Son prix : A partir de 10 euros par mois...et vous gardez la maitrise complete de votre site sans connexion a votre bdd..

    Elle est deja utilisée par des moteurs comme http://www.fraggo.com et comme http://www.123emploi.com/

    Pourquoi réinventer la roue ?

    j'attend vos remarques sur mon mail

    JFL
     
  19. CaYuS
    CaYuS WRInaute occasionnel
    Inscrit:
    14 Juillet 2005
    Messages:
    492
    J'aime reçus:
    0
    Oups attention le double post.

    Juste une petite précision sur le "pourquoi réinventer la roue", tout message publicitaire mis à part.
    Je sais que beaucoup utilisent cette expression à tort ou à raison, mais il faut savoir que si on ne ré-invente pas la roue, on ne fait jamais rien, et on ne saura jamais rien.
    Re-utiliser les programmes des autres, oui, car indéniablement une vie est trop courte pour tout apprendre et, des fois, il faut se servir de ce qu'on a autour de soi.
    Mais par moment, à mon avis, il est aussi bon d'essayer de faire tout seul, avec ses petites mimines.
    Se confronter à des problèmes réels, ne pas y arriver, bloquer, insulter la machine, et au bout de la dixième heure devant son éditeur de texte favori avec pour seul compagnon un moteur de recherche, trouver la solution.
    C'est à ce moment là qu'on cerne la réelle valeur des choses, qu'on comprend comment ça marche, et qu'on peut améliorer le reste en conséquence.

    Enfin bon, vous m'excuserez la parenthèse, petit coup de gueule pas méchant pour dire :
    Laissez nous ré-inventer la roue quand on en a envie, ça ne peut qu'être enrichissant ! ;)
     
  20. maktreri
    maktreri Nouveau WRInaute
    Inscrit:
    1 Juillet 2005
    Messages:
    5
    J'aime reçus:
    0
    Bonjour à tous,

    le site sur lequel je bosse est entièrement en html, vous connaissez une solution valable ?

    J'ai testé google mais il met des liens vers mes concurents dans les résultats :eek:(
     
  21. nodom
    nodom WRInaute occasionnel
    Inscrit:
    15 Janvier 2005
    Messages:
    281
    J'aime reçus:
    0
    plus tu peux fair sur mySql plus c'est performant. tu passe à PHP qand tu ne peux plus.
    astuce:
    ajouter dans votre table un champ qui concatène tous les champs text sujet de recherche par mot clef après utiliser les expressions régulière mysSql ou like ça dépend...
    pour plus de pertinences il faut une indexation, là ça va devenir complexe :wink:
     
  22. CaYuS
    CaYuS WRInaute occasionnel
    Inscrit:
    14 Juillet 2005
    Messages:
    492
    J'aime reçus:
    0
    Tu as testé avec Adsense pour les recherches ?
    Car plus simplement, tu peux tester avec la commande site:example.com sur Google, peut être cela sera plus discret.
     
  23. Verticrawl
    Verticrawl Nouveau WRInaute
    Inscrit:
    2 Septembre 2005
    Messages:
    12
    J'aime reçus:
    0
    Oups !

    Lisez les 2 messages au dessus du votre ;-)
     
  24. Verticrawl
    Verticrawl Nouveau WRInaute
    Inscrit:
    2 Septembre 2005
    Messages:
    12
    J'aime reçus:
    0
    RE :

    Vous avez oublie que les donnees sont codes dans une charset specifique (iso-8859-15) par exemple.

    On, le texte de recherche (et le fulltext de mysql) ne prennent en compte les accents que si l'ensemble des donnees sont codes de la meme facon. En clair, si vous avez de l'UTF-8 et de l'ISO-88 ...et que vous recherchez un caractere accentué...vous n'aurez pas tous les resultats hihihihi...

    Votre contenu doit donc être homogene...et je ne parle par du copier-coller depuis word (charset 1251 je crois) !!!

    Bonne chance !
     
  25. evets
    evets WRInaute discret
    Inscrit:
    16 Septembre 2004
    Messages:
    244
    J'aime reçus:
    0
    Salut a tous!!

    J'ai vu le code proposé dans ce post et me demande ce que veut dire cette ligne :

    $where = (isset($_GET['sub_cat_id'])) ? 'AND site_cat='.intval($_GET['sub_cat_id']) : '';

    c'est quoi 'sub_cat_id' ??

    Je voudrais tester cette requete.

    Merci !!! :wink:
     
Chargement...
Similar Threads - Moteur recherche interne Forum Date
mon site internet n'apparaît plus dans les moteurs de recherche Problèmes de référencement spécifiques à vos sites 16 Juillet 2019
Moteur de Recherche Interne et Contenus Significatifs Débuter en référencement 8 Juin 2017
In Apps, le moteur de recherche interne sur Android Google : l'entreprise, les sites web, les services 31 Août 2016
Moteur de recherche interne, est ce un problème ? Débuter en référencement 30 Septembre 2015
Afficher tous les résultats de son moteur de recherche interne Débuter en référencement 19 Juin 2015
Suivi du moteur de recherche interne Google Analytics 13 Février 2015
SEO et moteur de recherche interne selon Google ? Référencement Google 12 Juin 2014
Moteur de rechercher interne - Résultats similaires Débuter en référencement 8 Janvier 2014
Suivi analytics du moteur de recherche interne Google Analytics 6 Décembre 2013
Moteur de recherche interne sur site web immobilier Développement d'un site Web ou d'une appli mobile 14 Novembre 2013
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice