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

Servlets/JSP Java Discussion :

moteur de recherche


Sujet :

Servlets/JSP Java

  1. #1
    Membre régulier
    Homme Profil pro
    Analyste Concepteur[Secteur Banque/assurance]/ Ingénieur d'état en informatique
    Inscrit en
    Août 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Analyste Concepteur[Secteur Banque/assurance]/ Ingénieur d'état en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 89
    Points : 96
    Points
    96
    Par défaut moteur de recherche
    salut tt le monde
    je travaille sur un projet en java ,je dois créer un moteur de recherche des documents qui existent sur un pc!(spécialement dans un meme dossier)!
    j'ai deja créer une servlet qui permette de stocker les informations concernant les documents(titre,auteur,date de création..)(via un formulaire )!
    les données sont stockées dans un fichier XML(index)!
    le fichier est de la forme suivante:
    <Projets>
    <Rapport>
    <Titre>.........</Titre>
    <Categories>pdf</Categories>
    <Sujet>.........</Sujet>
    <Auteur>..........</Auteur>
    <Lien>C:/projets/rapport1.pdf</Lien>
    </Rapport>


    Maintenant je vous demande de l'aide si c'est possible ,concernant la partie de la création du moteur de recherche qui va retourner des réponses à des requêtes saisies par l'utilisateur,
    et qui doit retourner les liens des documents trouvés qui correspondent à la requête!
    Merci d'avance!

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 80
    Points : 74
    Points
    74
    Par défaut conception
    Bonjour,

    Juste une remarque sur la conception, le moteur de recherche doit avoir une base d'information, c'est visiblement la servlet. La servlet doit donc constituer sa base de donnée en scannant des répertoires. Puisque que c'est du XML il serait assez naturel de requêter cette base avec XPATH.
    Dans cette perspective il faut que la base (le fichier XML) soit chargé dans un DOM puis appliquer une requête XPATH et restituer les entrées obtenues.

    Evidemment XPATH c'est pas très user friendly mais la base d'information étant assez simple ce n'est pas très compliqué de faire un formulaire pour aider à la saisie.

    Un autre moyen est de faire du JAX avec une classe qui scanne les entrées et valide la recherche, cela évite le DOM.

    Est-ce la conception que tu avais en tête ?

    Salutations

  3. #3
    Membre régulier
    Homme Profil pro
    Analyste Concepteur[Secteur Banque/assurance]/ Ingénieur d'état en informatique
    Inscrit en
    Août 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Analyste Concepteur[Secteur Banque/assurance]/ Ingénieur d'état en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 89
    Points : 96
    Points
    96
    Par défaut Re:Conception
    bonsoir spopoff,

    Merci d'avoir répondu à mon message ,en ce qui concerne ce que vous avez

    dit à propos la conception on a pas adopté la conception dont vous avez parlémai j'ai essayé de concevoir un moteur de recherche selon les besoins .

    il m'etait demandé de réaliser un moteur de recherche qui retournent les documents qui existent déja dans un pc(serveur)pr éviter la recherche manuelle.c'est pr cette raison là que j'ai fait une interface pour l'utilisateur pour qu'il saisit les informations de chaque rapport réalisé(document)(titre,auteur,lien) et cela va etre stocké dans un fichier XMl(indexation).ce que je voulais savoir c'est comment je vais récupérer les informations de ce fichier Xml et retourner les liens de ces documents documents.sinon ,si vous pouvez bien m'expliquer votre idée concernant XPAth et comment je vai travailler avec parceque je suis debutant en ça et merci pr votre interet.
    salutations

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 80
    Points : 74
    Points
    74
    Par défaut recherche JAX
    Bonjour,

    Dans le code joint un exemple de recherche d'information dans un fichier XML à partir de JAX. Je pense que c'est la manière la plus simple de faire une recherche au regard de ton projet.

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    import org.xml.sax.*;
    import org.xml.sax.helpers.LocatorImpl;
    import java.io.*;
    /**
     * @author smeric
     *
     * Exemple d'implementation extremement simplifiee d'un SAX XML ContentHandler. Le but de cet exemple
     * est purement pedagogique.
     * Very simple implementation sample for XML SAX ContentHandler.
     */
    public class SaxFilter implements ContentHandler {
     
            /**
             * Constructeur par defaut. 
             */
            private Locator locator;
            private String connu = "";
            private String idErr = "";
            private Boolean bFound = false;
            public SaxFilter() {
                    super();
                    // On definit le locator par defaut.
                    locator = new LocatorImpl();
            }
     
            /**
             * Definition du locator qui permet a tout moment pendant l'analyse, de localiser
             * le traitement dans le flux. Le locator par defaut indique, par exemple, le numero
             * de ligne et le numero de caractere sur la ligne.
             * @author smeric
             * @param value le locator a utiliser.
             * @see org.xml.sax.ContentHandler#setDocumentLocator(org.xml.sax.Locator)
             */
            public void setDocumentLocator(Locator value) {
                    locator =  value;
            }
     
            /**
             * Evenement envoye au demarrage du parse du flux xml.
             * @throws SAXException en cas de probleme quelquonque ne permettant pas de
             * se lancer dans l'analyse du document.
             * @see org.xml.sax.ContentHandler#startDocument()
             */
            public void startDocument() throws SAXException {
                    System.out.println("Debut de l'analyse du document");
            }
     
            /**
             * Evenement envoye a la fin de l'analyse du flux xml.
             * @throws SAXException en cas de probleme quelquonque ne permettant pas de
             * considerer l'analyse du document comme etant complete.
             * @see org.xml.sax.ContentHandler#endDocument()
             */
            public void endDocument() throws SAXException {
                    System.out.println("Fin de l'analyse du document" );
            }
     
            /**
             * Evenement recu a chaque fois que l'analyseur rencontre une balise xml ouvrante.
             * @param nameSpaceURI l'url de l'espace de nommage.
             * @param localName le nom local de la balise.
             * @param rawName nom de la balise en version 1.0 <code>nameSpaceURI + ":" + localName</code>
             * @throws SAXException si la balise ne correspond pas a ce qui est attendu,
             * comme par exemple non respect d'une dtd.
             * @see org.xml.sax.ContentHandler#startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)
             */
            public void startElement(String nameSpaceURI, String localName, String rawName, Attributes attributs) throws SAXException {
                    System.out.println("Ouverture de la balise : " + localName);
                    try{
                        if (localName.equals("Syslog")) {
                           String c = attributs.getValue("","component");
                           String e = attributs.getValue("","errorCode");
                           if (c.equals("OC")&& e.equals("OC00")) {
                             connu= "A";
                             idErr = attributs.getValue("","id")+"\n";
                           }
                        }
                    }catch(Exception err){
                        System.out.println("Erreur Ouverture de la balise Syslog: " );
                    }
                    try{
                        if (localName.equals("Message")) {
                           String i = attributs.getValue("","id");
                           if (i.equals("OC_EXTENDED_UNKNOWN_ATTR")) {
                             connu += "B";
                           }
                        }
                    }catch(Exception err){
                        System.out.println("Erreur Ouverture de la balise message: " );
                    }
            }
            public void characters(char[] ch, int start, int length) throws SAXException {
                try{
                    if(new String(ch,start,length).equals("Faurecia_IAMState")){
                        if(connu.equals("AB")){
                            bFound = true;
                        }
                    }
                }catch(Exception err){
                    System.out.println("Erreur Ouverture de la balise texte: " );
                }
            }
        public Boolean getFound(){
            return bFound;
        }
     
        public void endElement(String uri, String localName, String qName) throws SAXException {
            return;
        }
     
     
        public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException {
            return;
        }
     
        public void processingInstruction(String target, String data) throws SAXException {
            return;
        }
     
        public void skippedEntity(String name) throws SAXException {
            return;
        }
     
        public void startPrefixMapping(String prefix, String uri) throws SAXException {
            return;
        }
     
        public void endPrefixMapping(String prefix) throws SAXException {
            return;
        }
     
    }
    Cette classe traite un contenu particulier dont voici un exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <Syslog id='#ID#EFF7-:E2411F4FF11:44AA69A1:07E63DCD49F5C18C' name='Syslogc81c5f94dcd36e70:1a96aa44:11ff4f1142e:-7fff' creator='System Log Handler' createDate='1236765054217' lastModifier='System Log Handler' lastModDate='1236765054217' TimeStamp='1236765054201' severity='W' component='OC' Server='FAURECIA-VM1' errorCode='OC00'>
      <Message id='OC_EXTENDED_UNKNOWN_ATTR'>
        <String>User</String>
        <String>Faurecia_IAMState</String>
      </Message>
      <MemberObjectGroups>
        <ObjectRef type='ObjectGroup' id='#ID#Top' name='Top'/>
      </MemberObjectGroups>
    </Syslog>
    Voici le code qui lance l'analyse sur le fichier XML:

    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
    18
                    File fileXml = new File(inputBinaryFileName+rset.getString("NAME").replaceAll(":", "_")+".xml");
                    xml = new FileInputStream(fileXml);
                    SaxFilter s = new SaxFilter();
                    SAXParser p = new SAXParser();
                    p.setContentHandler(s);
                    try { p.parse(new InputSource(xml)); } 
                    catch (Exception e) {e.printStackTrace();}
                    idErreur = rset.getString("NAME").replaceAll(":", "_") +"\r\n";
                    if (s.getFound()){
                        byte msg[] = new byte[50];
                        msg = idErreur.getBytes();
                        rapport.write(msg, 0, msg.length);
                    }else{
                        byte msg[] = new byte[50];
                        msg = idErreur.getBytes();
                        erreur.write(msg, 0, msg.length);
                    }
                    xml.close();
    Bon à partir de ça il faut adapter à ton problème passer en paramètre les informations recherchées par un utilisateur (dans mon cas elles sont fixes) et lui retourner le chemin d'accès au(x) fichier(s) si la recherche est fructueuse.

    Bon courage

  5. #5
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut
    es tu alle voir du coté de Lucène voir comment le moteru de recherche fonctionne, il y peut être de bonne idée à prendre pour ton propre moteur.

Discussions similaires

  1. [Info]moteur de recherche full text en environnement j2ee
    Par ddams dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 03/11/2004, 19h39
  2. comment faire ma base de donnée pour un moteur de recherche
    Par HoB dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 04/05/2004, 15h07
  3. Moteur de recherche par date
    Par Prue dans le forum ASP
    Réponses: 17
    Dernier message: 27/08/2003, 16h07
  4. [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