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

Java Discussion :

Lucene - Query


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 24
    Par défaut Lucene - Query
    Bonjour à tous,

    J'ai commencé a travailler avec Lucene et je suis tomber sur plusieurs probleme mais là j'ai un probleme bizarre avec le queryParser. Il semblerait qu'il est impossible de faire des recherches sur des champs quand la valeur est certain charactère. Je vous donne un petit exemple:

    +titre:"Mon titre de livre" +actif:A

    Si on parse une query comme celle-ci il semblerait que le critère de recherche sur le champs "actif" est tout simplement ignorer. Avez vous une idée pourquoi et comment règler le probleme? Voici un exemple de code java pour vous. J'ai essayer aussi en utilisant les objets Term, BooleanQuery, BooleanClause mais la il semblerait qu'il ne trouve pas de resultat alors que mon fichier contient bien les données.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    IndexSearcher indexSearcher = new IndexSearcher(FSDirectory.open(new File("SOME PATH TO LUCENE INDEXED FILE")));
    StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_30);
    String luceneQuery = "+titre:\"Mon titre de livre\" +actif:A";
    Query q = new QueryParser(Version.LUCENE_30, "*", analyzer).parse(luceneQuery);
    TopScoreDocCollector collector = TopScoreDocCollector.create(1, true);
    indexSearcher.search(q, collector);
    Merci d'avance

  2. #2
    Membre chevronné Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 472
    Par défaut
    As-tu essayé avec un 'AND'?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String luceneQuery = "titre:\"Mon titre de livre\"  AND actif:A";

  3. #3
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 24
    Par défaut
    Meme résultat. Il semblerais que Lucene ne peut faire des recherche sur le charactère "A" ou "a".

  4. #4
    Membre chevronné Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 472
    Par défaut
    J'ai déjà travaillé avec Lucene et je n'ai pas eu ce souci. J'ai des exemple de code sous mes yeux et je suis étonné que la recherche ne s'effectue pas correctement chez toi.

    Est-il possible d'entourer ton A avec des doubles quotes comme tu l'as fait avec title? A part ça je ne vois pas, à voir avec la doc Lucene...

  5. #5
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 24
    Par défaut
    En fait, je viens de recevoir une information des forum de lucene. Ce serais mon StandardAnalyzer qui serais le probleme. Il est question de StopWord par default(ie. StandardAnalyzer.STOP_WORDS_SET) J'ai enlever ces Stopword, mais sa me reviens a mon probleme du depart. Si je fais une recherche de tout les element de mon Document et filtre par certain critère je vois me s result correctement, mais faire la recherche avec une BooleanQuery de lucene je n'ai pas mes resultats.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    IndexSearcher indexSearcher =  new IndexSearcher(FSDirectory.open(new File( "SOME LUCENE DATA FILE" )));
    StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_30, new HashSet<String>());
    String luceneQuery = "+idCompagnie:32 +codeProdHab:RSA +codeCourbeDiff:A +idTarification:1";
    Query q = new QueryParser(Version.LUCENE_30, "*", analyzer).parse(luceneQuery);
    TopScoreDocCollector collector = TopScoreDocCollector.create(1, true);
    indexSearcher.search(q, collector);
    if (collector.getTotalHit() > 0) {
    //Do something
    }

  6. #6
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 24
    Par défaut
    Bon ok je pense avoir trouver une solution pour les intérresser.

    Premièrement, il est impossible de parser une requète contenant un critère de recherche avec un "A" ou n'importe qu'elle autre StopWord du StandardAnalyzer, donc utiliser le constructeur en spécifiant un Set de StopWord vide.

    Deuxièmement, dans mon cas j'avais génèré mon index avec un Analyzer avec des stopWord alors pour une raison "x" en faisant une recherche il ne trouvait pas mon document contenant des "A" comme seule caractère dans le Field.

    Merci de vos réponses.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lucene search query
    Par Malak Tunisienne dans le forum Général Java
    Réponses: 2
    Dernier message: 21/05/2012, 12h24
  2. Lucene - Query - search
    Par leblanc.philippe dans le forum Autres
    Réponses: 0
    Dernier message: 10/01/2011, 16h41
  3. Je ne retrouve pas ma SP dans Query analyser
    Par WOLO Laurent dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 14/07/2003, 12h43
  4. Query data set
    Par Sandra dans le forum JBuilder
    Réponses: 3
    Dernier message: 20/01/2003, 10h08
  5. [XMLRAD] Décoder Request.Query
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 8
    Dernier message: 10/01/2003, 16h40

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