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

Autres composants PHP Discussion :

[Zend_Lucene] Moteur de recherche et pagination


Sujet :

Autres composants PHP

  1. #1
    Membre régulier Avatar de Merfolk
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    170
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 170
    Points : 113
    Points
    113
    Par défaut [Zend_Lucene] Moteur de recherche et pagination
    Bonjour,


    y a til dans Zend lucene une fonction de pagination
    (façon
    - limit 0, 10
    - limit 10,20
    ou bien
    skip 0 count 20
    skip 20 count 20..
    )


    ou bien faut il écrire soit même "une pagination" à partir du tableau total ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    // une boucle du genre
    $nb=0;
    $debutPage = $pageCourante * $nbDocsParPage;
    foreach($hits as $hit)
    {
          // skip debut
          if (++$nb  < $debutPage)
                continue;
     
         // afficher
     
     
         // skip fin
         if ($nb == ($debutPage+$nbParPage) )
            break;
    }
    Si c'est le cas, je m'inquiète un peu de la viabilité...si on a beaucoup de documents, et qu'une requête en remonterait ~10 000 ... pour afficher juste les 10 premiers ?


    merci
    Chasseur de bug en activité
    L'erreur est humaine, mais pour vraiment foutre le bordel, on a besoin d'un ordinateur

  2. #2
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 19
    Points : 16
    Points
    16
    Par défaut
    La solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        $index = Zend_Search_Lucene::open($this->_index);
            $query = Zend_Search_Lucene_Search_QueryParser::parse($query);
            $hits = new ArrayObject($index->find($query));
     
            if (!count($hits)) {
                return null;
            }
     
            $hits = new LimitIterator($hits->getIterator(), ($pg - 1) *
    $pp, $pp);
     
            return $hits;
    $pg : le numéro de la page.
    $pp : résultat par page.

  3. #3
    Membre régulier Avatar de Merfolk
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    170
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 170
    Points : 113
    Points
    113
    Par défaut
    re -
    (ça fait longtemps je sais )

    je mets en non résolu en fait. Je n'avais pas réalisé de suite le code.. je croyais que c'était des fonctions de zend..
    mais en fait non, là tu ne fais que tout récupérer , et faire une fenêtre finalement.

    ça ne correspond pas à une vraie pagination .. s'il y a 15 000 items retournés, ça va planter / faire un time out / ou une mémory limit.

    ce n'est pas du tout façon "curseur sql" .. je pensais à quelque chose comme ça en fait.

    Ca n'existe pas ?
    Chasseur de bug en activité
    L'erreur est humaine, mais pour vraiment foutre le bordel, on a besoin d'un ordinateur

  4. #4
    darthmower
    Invité(e)
    Par défaut
    Salut,

    Tu as testé de le coupler avec un Zend_Paginator?

    Gripsou

  5. #5
    Membre régulier Avatar de Merfolk
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    170
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 170
    Points : 113
    Points
    113
    Par défaut
    en fait je me suis encore documenté :

    - ce n'est effectivement pas existant mais c'est normal - ce n'est pas une bdd, et il faut qu'il travaille toute la base pour trouver le jeu qui répond, de toute façon

    - en paginant comme proposé, ça fait à près l'affaire car ça ne renvoie que "la clé", et c'est seulement quand on fait hit-> .. qu'il charge en entier

    mais ça pose quand même un problème : on fait comment sur un "gros" site ? tout peut partir en memory ou time out error... et c'est pas question de mettre en config apache memory limit 500Megs / 5 minutes...
    Chasseur de bug en activité
    L'erreur est humaine, mais pour vraiment foutre le bordel, on a besoin d'un ordinateur

Discussions similaires

  1. [MySQL] moteur recherche multi pagination suivant recherche
    Par speedylol dans le forum PHP & Base de données
    Réponses: 51
    Dernier message: 13/01/2017, 10h51
  2. Pagination d'un moteur de recherche
    Par dscludo dans le forum Langage
    Réponses: 7
    Dernier message: 27/12/2012, 17h54
  3. [MySQL] resultat d'un moteur de recherche et pagination
    Par mustapha_aim dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/07/2010, 16h05
  4. [MySQL] Pagination sur un moteur de recherche
    Par mike_chti dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 16/09/2008, 13h16
  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