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

Plateformes (Java EE, Jakarta EE, Spring) et Serveurs Discussion :

La recherche full-text avec Apache Solr


Sujet :

Plateformes (Java EE, Jakarta EE, Spring) et Serveurs

  1. #1
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut La recherche full-text avec Apache Solr
    Bonsoir,

    Voici un article que je ne parviens pas à finaliser dans le détail, mais qui me semble suffisamment avancé pour vous le présenter sans trop rougir :
    Configurer un moteur de recherche performant à l'aide d'Apache Lucene/Solr et Apache Tomcat (ou tout autre conteneur de servlets)

    Apache Lucene est un moteur d'indexation de texte permettant d'effectuer des recherches en langage naturel à l'aide de diverses manipulations automatiques du texte. Le texte indexé est enregistré sous de multiples représentations, de même pour le texte recherché, et les résultats de recherche sont déterminés suite à la comparaison de ces variantes.
    Apache Solr étend le principe de Lucene en facilitant l'administration (interface RESTful) et en ajoutant des fonctionnalités : filtres de recherche, manipulation des résultats, etc.
    Dans ce tutoriel, vous apprendrez à mettre en place un serveur Tomcat avec plusieurs schémas Solr.
    J'ai commencé la rédaction en 2010 avec Solr 1.4. Depuis, les projets Solr et Lucene ont aligné leurs versions : ils en sont maintenant (l'un et l'autre) à la version 3.5 ; la version 3.6 est prévue pour très bientôt et la version suivante sera dans la branche 4.x.
    De même, la rédaction a commencé alors que Tomcat 5.5 était encore assez répandu, et la branche 7 n'était pas encore sortie.


    N'hésitez pas à laisser vos commentaires à la suite, surtout si vous avez comparé divers moteurs full-text et que vous souhaitez partager votre expérience.

    Bonne lecture !

  2. #2
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 450
    Points
    19 450
    Par défaut
    Bonjour.

    Merci pour ce cours qui semble très complet et d'un bon niveau, c'est exactement ce dont j'avais besoin (j’entends de plus en plus parler de Solr sans savoir exactement ce que c'est, bien sûr avec une petite idée mais ...). Je n'ai pas eu le temps de le parcourir en profondeur mais je le ferait dès que j'aurais un peu temps où en cas de besoin.

    Merci encore.

    Cordialement,
    Idriss

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 13
    Points : 40
    Points
    40
    Par défaut
    Un travail impressionnant! Merci.

    J'aurais une remarque sur le vocabulaire dans le paragraphe I-B ;-)
    La traduction de stemming n'est pas lemmatisation mais stemmatisation ou racinisation. Les 2 traitements sont légèrements différents et ce qui est décrit dans le paragraphe I-B-2-b est bien la racinisation des mots (mot -> lexème ou racine ou radical). Et c'est bien ce que Solr effectue comme traitement.

    La lemmatisation (mot -> lemme) consiste à ramener un mot à sa forme canonique, c'est à dire la plus petite unité de sens. Ce sera la forme "singulier" pour un nom, la forme infinitive pour un verbe.
    Les dictionnaires par exemples recensent tous les lemmes d'une langues.

    Voici un exemple qui illustre la différence entre les 2. Prenons 3 mots :
    augmenter / augmentez / augmentation

    La lemmatisation donne 2 lemmes :
    augmenter / augmentation

    La racinisation(stemmatisation) donne 1 lexème :
    augment

    Seule la racinisation permet de rapprocher les 3 mots et est donc plus efficace dans Solr.
    Je pense donc qu'il est plus juste d'intituler votre paragraphe "Racinisation" que "Lemmatisation".


    Voir la page wikipedia sur la racinisation
    http://fr.wikipedia.org/wiki/Racinisation


    A noter qu'il est plus difficile de mettre au point en informatique un lemmatiseur qu'un raciniseur car lemmatiser un mot dépend beaucoup de sa fonction grammaticale. Il y a beaucoup de cas où il y a ambiguïté. Ex:
    "je marche" => lemme: marcher
    "les marches de l'escalier" => lemme: marche

    Le raciniseur supprimmera conservera simplement la racine: march

  4. #4
    Membre éprouvé
    Avatar de request
    Inscrit en
    Novembre 2002
    Messages
    328
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 328
    Points : 1 248
    Points
    1 248
    Par défaut
    Bonjour Yogui,

    Bravo pour se travaille, c'est complet est fort intéressant.
    J’aurais bien aimé avoir lu ton article avant d'attaquer la documentation de Solr, j'aurais gagné du temps.

    Dans le chapitre 8 tu dis que le Suggester nécessite un reload, cela ne semble pas se produire dans mon cas avec la dernière version.

    Pour ceux qui veulent voir ce que cela peut donner dans un cas réél avec les modules de l'articles: suggestion, facet, highlight et full text le tout en ajax
    http://www.jardiland.com/information...he.html#erable

    Les performances sont très bonnes. SOLR est un outils mature et intéressant.

  5. #5
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    @tvibes : Eh bien pourtant, je me suis renseigné pendant un bon moment et j'ai fait relire spécialement cette partie de l'article. Merci pour avoir relevé cette coquille, c'est corrigé.

    @request : ma foi, j'aurais moi aussi avoir eu un cours d'intro un peu plus facile d'approche que le tuto qui était disponible sur le Wiki officiel à l'époque
    J'espère que mon article est un élément de réponse à ce problème.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 13
    Points : 40
    Points
    40
    Par défaut
    @Yogui @request Quand j'ai commencé avec Solr j'ai acheté le EBook
    Solr 1.4 - Enterprise Search Server
    (moins de 30€ il me semble) Il m'a été d'une grande aide.

  7. #7
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    En effet, j'en ai fait l'acquisition également pour mes débuts. Les publications de LucidWorks sont aussi très utiles, surtout que Yonik est (encore aujourd'hui) très actif sur la mailing list officielle, il sait donc très bien de quoi il parle ! Malheureusement, comme toute documentation, ces publications (ainsi que la mienne) perdent peu à peu de leur fraîcheur...

  8. #8
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2003
    Messages : 307
    Points : 378
    Points
    378
    Par défaut
    Pour ceux qui veulent voir ce que cela peut donner dans un cas réél avec les modules de l'articles: suggestion, facet, highlight et full text le tout en ajax
    http://www.jardiland.com/information...he.html#erable
    @request

    Super ton interface !

    C'est un code issue d'un projet open source qu'on peut se procurer quelque part ? ou est-ce fait maison ?

    Merci

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Coquille ?
    Bonjour,

    Merci beaucoup pour ce tuto vraiment complet et utile pour débuter.

    Arès avoir buté sur un point, il me semble que le schéma décrit à la section IV-A-2-3 ne peut pas fonctionner car les champs "allEnSearch" et "allFrSearch" ne sont pas déclarés avec multiValued="true".

    J'ai dû ajouter ce paramètre pour que l'import du xml se déroule sans erreur.

    Comme je débute tout juste sur Solr je dis peut-être une bêtise.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 13
    Points : 40
    Points
    40
    Par défaut
    @nils nicolas
    Je confirme.
    L'utilisation de 2 <copyField /> pour chacun des champs "allEnSearch" et "allFrSearch" (paragraphe IV-C) rend obligatoire la déclaration multiValued="true"



    -- Edit --
    A la décharge de Yogui, le schemas.xml fourni dans le *.zip (paragraphe VIII-C) contient bien les multiValued="true"

  11. #11
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    @nils nicolas, @tvibes :
    Merci pour vos justes remarques. Je corrigerai sous peu (petit problème temporaire avec l'outil de génération/upload de l'article).

Discussions similaires

  1. recherche full text avec VARCHAR(150)?
    Par alassanediakite dans le forum Débuter
    Réponses: 1
    Dernier message: 19/10/2012, 23h27
  2. Outil de recherche Full Text (pour doc/pdf etc.) avec PHP
    Par amalec78 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 18/04/2011, 14h36
  3. [MySQL] Recherche d'un outil Full Text avec PHP
    Par amalec78 dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 25/11/2010, 09h47
  4. Réponses: 0
    Dernier message: 01/08/2008, 17h15
  5. Recherche FULL Text existe que dans MySql ?
    Par seb.49 dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 01/06/2004, 23h30

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