2011-02-11 3 views
1

Est-il acceptable d'indexer les documents lucene avec deux analyseurs différents? Comme je dois prendre en charge la recherche sensible à la casse et à la casse. Je me demande donc si je peux utiliser deux analyseurs pour le même document.Indexation d'un document lucene avec différents analyseurs

writer.addDocument(doc,new StandardAnalyzer(Version.LUCENE_30)); writer.addDocument(doc,new custom_analyser);

Je prévois d'avoir un analyseur personnalisé qui prend en charge tous filtre l'analyseur norme ne filtre sauf pour les minuscules. Pendant que j'essaie de rechercher des résultats à partir d'indices, je pense que nous pourrions finir par obtenir des doublons ..

Des commentaires/idées?

EDIT: @Simon

Analyzer defaultAnalyzer = new StandardAnalyzer(Version.LUCENE_30); 
PerFieldAnalyzerWrapper wrapper = new PerFieldAnalyzerWrapper(defaultAnalyzer); 
wrapper.addAnalyzer("CaseSensitiveContents", new WhitespaceAnalyzer()); 

writer = new IndexWriter(FSDirectory.open(index), wrapper, true, 
         new IndexWriter.MaxFieldLength(100)) 

doc.add(new Field("contents", parser.getReader(), TermVector.YES)); 
doc.add(new Field("CaseSensitiveContents", parser.getReader(), TermVector.YES)); 
writer.add(doc) 

Répondre

2

Votre code exemple ajouterait deux documents presque identiques (à l'exception de leur enveloppe) à votre index.

Que diriez-vous d'ajouter deux champs à un document, l'un sensible à la casse, l'autre non? Vous pouvez utiliser le PerFieldAnalyzer pour cela.

+0

@Simon, je reçois une exception de flux fermé lorsque j'essaie d'ajouter le même contenu à deux polices différentes ... comment résoudre ce problème? – remo

+0

Il semble que vous ajoutez le même jeton deux fois? Je n'ai jamais vu cette erreur en travaillant avec des chaînes pures. Je devrais voir du code pour déboguer ceci, de préférence où vous ajoutez votre Fieldable (habituellement Field). – sisve

+0

J'ai ajouté une partie de mon code ici – remo

Questions connexes