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

Langages de programmation Discussion :

Recherche dans une large liste


Sujet :

Langages de programmation

  1. #1
    Membre confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Octobre 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2010
    Messages : 178
    Points : 618
    Points
    618
    Par défaut Recherche dans une large liste
    Bonjour,

    J'ai une liste de plus de 4Millions de titres de documents (type "jesuisdocument1", "etmoiunautredoc" ...).
    En texte, cette liste fait environ 100mo.

    J'aimerais faire un système de recherche dans cette liste.

    Niveau langage je travaille en PHP, python et bash.
    J'ai aussi la possibilité de mettre de l'ES/Mongo... bref, pas trop de restriction.

    Le plus simple de mon point de vu étant de monter la liste en mémoire (php) et faire une recherche dessus via "similar_text", mais j'ai des doutes sur les performance.
    Monter un mongodb/es juste pour les fonctions de recherche basique, me semble surdimensionné.

    Quelqu'un aurait déjà effectué des tests de performance pour ce genre de cas?

    Merci !

  2. #2
    Membre confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Octobre 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2010
    Messages : 178
    Points : 618
    Points
    618
    Par défaut
    Je vois que la question n'a pas inspiré beaucoup de monde :p

    Je vais donc y répondre après pas mal de tests.
    Donc pour rappel du sujet: l'indexation de plus de 4Million de titres de documents, avec si possible un système de recherche.

    J'ai essayé les méthodes suivantes:
    - Redis (pas de recherche)
    - Python
    - Shell (wrapper grep)
    - Mongodb


    Concernant Redis, l'impact mémoire a rapidement été énorme. Il m'a consommé environ 1G pour 100k documents.
    Clairement, j'avais pas 40G de mémoire à lui fournir. Peut-être que je l'utilise mal.

    Pour Python, l'idée était simple: charger tous les fichiers en mémoire et exécuter des fonctions de recherche.
    ça fonctionne mais c'est pas performant et gourmand en ressource CPU.

    Shell: Pourquoi pas simplement utiliser grep ? Parfois la solution la plus simple est aussi la meilleure.
    Les temps de réponses étaient meilleurs que le programme python, mais toujours longs.

    MongoDB: J'ai changé le format pour du JSON, histoire qu'il puisse être importé sur MongoDB. Les 4millions de documents importés, MongoDB utilise à peine 800mo de mémoire, et grâce aux index le retour de résultat est juste... parfait.
    Query Performance Summary

    Documents Returned:1
    Index Keys Examined:1
    Documents Examined:1
    Actual Query Execution Time (ms):0
    Sorted in Memory:no

    Le gagnant est donc MongoDB !

Discussions similaires

  1. Réponses: 12
    Dernier message: 20/02/2014, 16h56
  2. Recherche dans une std::list et suppression.
    Par Nyko17 dans le forum SL & STL
    Réponses: 5
    Dernier message: 02/05/2008, 12h53
  3. Réponses: 2
    Dernier message: 10/10/2005, 02h25
  4. Recherche dans une liste non trié
    Par Oberown dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 13/09/2004, 13h56
  5. [BPW]Problème de recherche dans une boîte liste
    Par Alcatîz dans le forum Turbo Pascal
    Réponses: 14
    Dernier message: 05/07/2003, 15h10

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