Lucene - Exacte correspondance de chaîne

Je suis en train de créer un Lucene 4.10 de l'index. Je veux juste enregistrer dans l'index de l'exacte des chaînes que j'ai mis dans le document, sans segmentation.

Je suis en utilisant le StandardAnalyzer.

    Directory dir = FSDirectory.open(new File("myDire"));
    Analyzer analyzer = new StandardAnalyzer();
    IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_4_10_0, analyzer);
    iwc.setOpenMode(OpenMode.CREATE);
    IndexWriter writer = new IndexWriter(dir, iwc);
    StringField field1 = new StringField("1", content1, Store.YES);
    StringField field2 = new StringField("2", content2, Store.YES);
    StringField field3 = new StringField("3", content3, Store.YES);
    doc.add(field1);
    doc.add(field2);
    doc.add(field3);
    writer.addDocument(doc, analyzer);
    writer.close();

Si j'ai l'impression de l'index de contenu, je peux voir que mes données soient stockées, par exemple, de mon document a cette "zone 3":

    stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<3:"Fuel Tank Capacity"@en>

Je suis en train d'interroger l'index afin de le récupérer:

    IndexSearcher searcher = new IndexSearcher(reader);
    Analyzer analyzer = new StandardAnalyzer();
    QueryParser parser = new QueryParser("3", analyzer);
    String queryString = "\"\"Fuel Tank Capacity"\@en\"";
    Query query = parser.createPhraseQuery("3", QueryParser.escape(queryString));
    TopDocs docs = searcher.search(query, null, 20);

Je suis en train de rechercher le terme "Capacité du Réservoir de Carburant"@fr (guillemets compris) donc j'ai essayé de leur échapper et j'ai mis un autre couple de guillemets autour des termes dans le but de laisser lucene comprendre que je suis à la recherche de l'ensemble des textes.

Si j'ai l'impression de la requête, j'obtiens:
3:"capacité du réservoir de carburant fr"
mais je ne veux pas de scinder le texte sur le symbole@.

Je pense que mon premier problème est le StandardAnalyzer, car il semble que pour marquer, si je ne me trompe pas. Cependant, je ne comprends pas comment interroger l'index afin d'obtenir exactement "Capacité du Réservoir de Carburant"@fr (guillemets compris).

Merci

Voir cette très bonne explication : stackoverflow.com/a/15416213/4017037

OriginalL'auteur LucaT | 2014-09-12