Ajouter un moteur de recherche

flipflipflipflip Member
août 2009 modifié dans Modifications
Actuellement PluXml n'intègre pas de moteur de recherche et techniquement l'ajout de cette fonction sera compliqué. J'ai réfléchis à une solution pour contourner le problème, utiliser le module de recherche de google.

- Vous créer un compte Google AdSense : http://www.google.com/adsense;
- Dans l'onglet Configuration AdSense de votre compte, sélectionner "AdSense pour les recherches";
- Complété le formulaire et récupéré le code.

Il se compose en deux parties : le formulaire et l'affichage des résultats. Dans un premier temps nous allons intégrer le formulaire dans la barre de menu de droite. Éditer le fichier themes/defaut/sidebar.php, après le bloc :
<div id="categories">
                <h2>Catégories</h2>
                <ul>
                        <?php $plxShow->catList('Accueil','#cat_name'); ?>
                </ul>
        </div>
Ajouter le premier code qui vous a été fournis par google dans des balises div, par exemple :
<div>
                <h2>Rechercher</h2>
                <form action="http://www.votresite.fr" id="cse-search-box">
                        <div>
                                <input type="hidden" name="cx" value="VOTRE PARTENAIRE PUB" />
                                <input type="hidden" name="cof" value="FORID:11" />
                                <input type="hidden" name="ie" value="UTF-8" />
                                <input type="text" name="q" size="20" />
                                <input type="submit" name="sa" value="Rechercher" />
                        </div>
                </form>
                <script type="text/javascript" src="http://www.google.fr/coop/cse/brand?form=cse-search-box&lang=fr"></script>
        </div>
Maintenant il va falloir intégrer l'affichage des résultats. Éditer le fichier themes/defaut/home.php. Remplacer le contenue par :
<?php include('header.php'); # On insere le header ?>
<div id="page">
        <?php if($_GET['cx'] == 'VOTRE PARTENAIRE PUB') { ?>
        <div id="cse-search-results"></div>
        <script type="text/javascript">
                var googleSearchIframeName = "cse-search-results";
                var googleSearchFormName = "cse-search-box";
                var googleSearchFrameWidth = 795;
                var googleSearchDomain = "www.google.fr";
                var googleSearchPath = "/cse";
        </script>
        <script type="text/javascript" src="http://www.google.com/afsonline/show_afs_search.js"></script>
        <?php } else { ?>
        <div id="content">
                <?php while($plxShow->plxMotor->plxRecord_arts->loop()): # On boucle sur les articles ?>
                        <div class="post">
                                <h2 class="title"><?php $plxShow->artTitle('link'); ?></h2>
                                <p class="post-info">Catégorie : <?php $plxShow->artCat(); ?> | le <?php $plxShow->artDate(); ?></p>
                                <?php $plxShow->artChapo(); ?>
                                <p class="comment_nb"><?php $plxShow->artNbCom('link'); ?></p>
                        </div>
                <?php endwhile; # Fin de la boucle sur les articles ?>
                <?php # On affiche la pagination ?>
                <p id="pagination"><?php $plxShow->pagination(); ?></p>
        </div>
        <?php include('sidebar.php'); # On insere la sidebar ?>
        <?php } ?>
</div>
<?php include('footer.php'); # On insere le footer ?>
Sur la ligne
<?php if($_GET['cx'] == 'VOTRE PARTENAIRE PUB') { ?>
Penser bien à mettre votre identifiant fournis par google.

Et voila c'est fonctionnel mais il y a deux contraintes :
- être référencé par google pour voir des résultats;
- accepter que des liens commerciaux s'affichent lors de vos recherches mais l'intérêt est un reversement des gains publicitaire.

J'ai un string de l'array

Réponses

  • GzygGzyg Member
    août 2009 modifié
    Euh... petite question : la recherche est-elle améliorable ?

    Je veux dire, par exemple sur ton site, où tu as semble-t'il mis en place cette recherche, si je cherche Eten, l'article sur ce SmartPhone m'est bien renvoyé mais si je cherche juste smart ou phone, il ne m'adresse rien...

    Merci, en tout cas de l'astuce. :)


    à plus,

    Gzyg


    <edit>(200ème message sur pluxml.org !! :) je vais arroser ça !)</edit>
  • C'est ce type de recherche qui est utilisé sur http://pluxml.org :)
  • StéphaneStéphane Member, Former PluXml Project Manager
    Gzyg a écrit:
    <edit>(200ème message sur pluxml.org !! :) je vais arroser ça !)</edit>
    Rhoooo tous les prétextes sont bons aujourd'hui pour boire un coup. ;-)
    Santé !

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • flipflipflipflip Member
    août 2009 modifié
    Euh... petite question : la recherche est-elle améliorable ?
    Comme ce sont les résultats de google, je dirais que sa dépend uniquement de lui et du travail qui a été réalisé sur pluxml pour le rendre "SEOfriendly" http://en.wikipedia.org/wiki/Search_engine_optimization mais actuellement pour moi et par rapport à mon expérience les url de pluxml contenant un ? ne sont pas bien prise en compte par les moteurs de recherche en général car tout ce qui est après un ? est considéré comme un paramètre pour un site dit dynamique donc souvent les moteurs les zap au profit d'url mieux construit. Pour plus d'info et éventuellement en parler je vous conseil ce post : http://forum.pluxml.org/viewtopic.php?id=1240
    Je veux dire, par exemple sur ton site, où tu as semble-t'il mis en place cette recherche, si je cherche Eten, l'article sur ce SmartPhone m'est bien renvoyé mais si je cherche juste smart ou phone, il ne m'adresse rien...
    Effectivement c'est une contrainte que j'ai soulevé en fin de post :
    - être référencé par google pour voir des résultats;
    C'est ce type de recherche qui est utilisé sur http://pluxml.org smile
    Je n'avais pas vue mais vous vous utilisé une page qui ne reprend pas le design du site pluxml.org

    J'ai un string de l'array

  • Bonjour,

    j'avais commencer a me confronter au probleme d'un moteur de recherche sur Pluxml.( http://forum.pluxml.org/viewtopic.php?id=1058 )

    Il s'est rapidement avérer que la consommation de memoire est beaucoup trop importante pour le faire comme je le tentais . allez lire les articles un par un et alimenter un tableau ... Sur des pluxml bien gras , le script s'enlise ... defaut de memoire ou temps d'execution trop long .

    Un dernier test sur une recherche par période (années) pouvait limiter ce defaut , mais la encore , un pluxml avec un post par jour grossi trop rapidement et pousser la recherche au mois par mois ou trimestres , bah c'est pas terrible .

    Ce probleme est-il lié a un usage inadapté de pluxml ? (trop de contenu pour ce type de gestionnaire ) , ce n'est ni un WP ou un dotclear ! :).

    Reste cependant une piste en AJAX que je n'ai pas encore tenter .

    L'idée : s'en aller scanner les fichiers par groupe de 20 ou 30 , renvoyer les infos dans la page et relancer automatiquement la recherche sur le prochain groupes de fichiers et ce, jusqu'à épuisement des articles. sur toute la période de vie de ce pluxml , ou sur une période données .

    Si quelqu'un passant ici a un lien vers une demo , un tuto ou exemple en ajax qui relance automatiquement X fois une requête , ça m'intéresserait de voir et de tester l'idée sans partir de zéro .

    Ajax a ces défaut , html 5 se profil ... il y a un truc correct a faire a mon avis , sans forcement le mettre a la sauce WEB.2 (...que je sais toujours pas ce que ça veut dire , lol ).

    A défaut d'apporter une soluce et sans vouloir provoquer de troll , Cela amènerait-ils d'autres idées ou solutions parmis vous ?

    GC


    Cordialement,
    gcyrillus

    Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
    Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci

  • L'idée d'utiliser ajax pour afficher un résultat filtré est pas mauvaise mais il va quand avoir un soucis surtout chez les hébergeurs gratuits. Même si ajax envoies les résultats par 20, la répétition de l'exécution du script va faire s'envoler la consommation cpu ou mémoire du serveur et vous allez apparaitre en rouge dans les stats de l'hébergeur.

    A un moment j'ai pensé à faire un fichier "base" qui aurait pour but de regrouper les articles, juste le texte brut, le moteur ferait une requête à ce fichier mais le fichier va littéralement explosé pour les gros blog et puis qu'elle structure de données et quel format choisir ?

    Je pense que la structure à base de fichier empêche la mise en place d'un moteur de recherche à PluXml.

    J'ai un string de l'array

  • GzygGzyg Member
    Je pense aussi qu'un site qui nécessite qu'on y fasse des recherches fréquentes et/ou précises doit s'équiper d'une base de données...

    Il serait peut-être intéressant de voir ce que donnerait PluXML associé à une BDD ?
    Sans intégrer celle-ci dans le script, je ne sais pas si c'est possible mais je réfléchis à ça car mon besoin est mixte : légèreté PluXML (facilité d'installation et d'administration) + multi-utilisateurs (sur une partie du site) + stockage BDD (pour recherches et tris)...

    En fait pour le moment je me sers de PluXML comme "portail" (en n'utilisant que les pages statiques).

    Je pense vous proposer bientôt un "design" spécifique à cette "chose"... :)


    à plus,

    Gzyg
  • StéphaneStéphane Member, Former PluXml Project Manager
    Salut gcyrillus-nomade

    Pourquoi mettre de l'ajax à toutes les sauces. Tu peux très bien faire ta méthode sans. (surtout que ça te fera pas gagner grand choses)

    Tu récupères tous les noms de fichiers dans un tableau
    Dans un boucle de lecture, tu parses les fichiers un par un, en testant si les critères de recherches sont vérifiés
    Si un critère est valide tu affiches le résultat et tu passes au fichier suivant.
    Tu bornes l'affichage avec les instructions du type ob_start(), ob_end_flush()

    D'un point de vue consommation mémoire il y a le tableau qui stocke le nom de tous les fichiers.Même en contenant 500 noms de fichiers ce n'est pas ça qui posera vraiment problèmes. C'est pinuts.
    D'un point de vue performance, dans la mesure où quelque soit la méthode, il faut lire tous les fichiers pour les parser et faire les tests de recherche, ce sera difficile d'optimiser. Ce sont surtout les entrée/sortie (lecture écriture de fichier) qui consomment énormément de CPU et ralentiront le script

    Bien sur on peut imaginer d'autres méthodes (système de cache, sérialisation, bidouilles de l'apprenti développeur) mais ça risque vite de devenir des usines à gaz pour pas grand chose. Si les temps de réponses deviennent vraiment trop importants, on peut alors penser que pluxml n'est pas adapté pour le site et dans ce cas il vaut mieux envisager d'utiliser un autre moteur de blog, qui lui sera adapté pour des gros sites avec beaucoup de données. Il faut trouver le bon compromis.

    Il y a un moteur de recherche qui avait été développé pour la version 3.1 de pluxml (et mypluxml), qui je pense, conviendrait très bien. Je ne me souviens plus si ça a déjà été adapté pour la 4.1.x

    Stéphane.

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • août 2009 modifié
    En effet , c'est deplacé le probleme de consommation de ressource .

    Le moteur de recherche en page statique du 4 est similaire a la version pour la 3 , il se greffe sur le tableau des artcicles de plxuxml ..

    voir la premiere version que j'avais ressortit http://forum.pluxml.org/viewtopic.php?id=1044

    L'idée de morceler le script dans sa recherche est en effet une bidouille :) . En fin de compte les ressources requises seront les mêmes . La regex utilisé est probablement ce qui est le plus couteux et qui finit par faire mouliner le truc.

    Pour l'idée en BDD , il y a peut-etre sqlite comme piste interessante ....

    GC

    <edit> erreur de manip</edit>


    Cordialement,
    gcyrillus

    Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
    Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci

  • StéphaneStéphane Member, Former PluXml Project Manager
    Je vous propose une autre façon de faire à partir d'une page statique.
    Le code est dispo sur le wiki à cette adresse

    http://wiki.pluxml.org/?page=Ajouter%20un%20moteur%20de%20recherche%20dans%20une%20page%20statique

    J'ai essayé d'optimiser au maximum les traitements.

    Stéphane

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

Connectez-vous ou Inscrivez-vous pour répondre.