2011-09-20 4 views
1

ne peut pas utiliser l'analyseur de mot-clé de Lucene correctement,Face à problème lors de l'utilisation de l'analyseur de mot-clé de Lucene, aide

String term = "new york"; 
    // id and location are the fields in which i want to search the "term" 
    MultiFieldQueryParser queryParser = new MultiFieldQueryParser(
             Version.LUCENE_30, 
             {"id", "location"}, 
             new KeywordAnalyzer()); 
    Query query = queryParser.parse(term); 
    System.out.println(query.toString()); 

ISSUE: (id: nouvel emplacement: nouveau) (id: location york: york)

RÉSULTAT ATTENDU: (id: new york emplacement: new york) (id: new york emplacement: new york)

S'il vous plaît aidez-moi à identifier ce que je fais mal ici ??

Merci - El

+0

La première chose, je suis curieux cela a compilé, car Eclipse me dit qu'il ya une erreur - je devais remplacer '{ « id », "location"} 'avec' new String [] {"id", "location"} '(sinon, il est traité comme deux chaînes au lieu d'un tableau). Vous avez compilé exactement ce code, ou remplacé le paramètre? –

Répondre

4

Vous faites rien de mal. C'est ainsi que fonctionne QueryParser. Étant donné que vous indexez votre texte en tant que jeton unique avec KeywordAnalyzer, vous devez utiliser TermQuery. Puisque vous avez deux champs de recherche, vous pouvez combiner deux TermQueries comme:

BooleanQuery bq = new BooleanQuery(); 
bq.Add(new TermQuery(new Term("id", term)), BooleanClause.Occur.SHOULD); 
bq.Add(new TermQuery(new Term("location", term)), BooleanClause.Occur.SHOULD); 
string txtQuery = bq.ToString(); 
+0

@ jakub.gieryluk, je ne vois pas ce que vous avez édité. –

+0

Seulement ajouté [coloration syntaxique] (http://meta.stackexchange.com/questions/981/syntax-highlighting-language-hints): '' –

+0

@ jakub.gieryluk : Hey merci pour l'aide, cela a fonctionné – Elvis

Questions connexes