à l'aide de frapper surligneur dans lucene

J'ai deux questions concernant frappé surligneur fourni avec apache lucene:

  1. voir cette fonction
    pourriez-vous expliquer l'utilisation de token paramètre stream.

  2. J'ai plusieurs grosses lucene document contenant plusieurs champs et chaque champ a certaines chaînes. Maintenant j'ai trouvé le plus de documents pertinents pour une requête particulière. Maintenant, ce document a été trouvé, parce que plusieurs mots dans la requête peut avoir correspondu avec les mots dans le document. Je veux savoir ce que les mots dans la requête causé cela. Donc, pour cela, je prévois d'utiliser Lucene Frappé Surligneur.
    Exemple: si la requête est "médecin de la peau delhi" et le document intitulé "dermatologue" contient les mots "de la peau" et "médecin" puis, après avoir mis en surbrillance, je devrais être capable de séparer "la peau" et "médecin" de la requête. J'ai essayé d'écrire le code pour que cela pour plusieurs semaines maintenant. Pas en mesure d'obtenir ce que je veux. Pourriez-vous m'aider s'il vous plaît?

Merci d'avance.

Mise à jour:

Approche Actuelle:
J'ai créer une requête contenant tous les mots dans le document.

Field[] field = doc.getFields("description");
String desc = "";
for (int j = 0; j < field.length; ++j) {
     desc += field[j].stringValue() + " ";
}

Query q = qp.parse(desc);
QueryScorer scorer = new QueryScorer(q, reader, "description");
Highlighter highlighter = new Highlighter(scorer);

String fragment = highlighter.getBestFragment(analyzer, "description", text);

Il travaille pour des documents de petite taille, mais ne fonctionne pas pour les documents de grande taille. La suite stacktrace est obtenu.

    org.apache.lucene.search.BooleanQuery$TooManyClauses: maxClauseCount is set to 1024
    at org.apache.lucene.search.BooleanQuery.add(BooleanQuery.java:152)
    at org.apache.lucene.queryParser.QueryParser.getBooleanQuery(QueryParser.java:891)
    at org.apache.lucene.queryParser.QueryParser.getBooleanQuery(QueryParser.java:866)
    at org.apache.lucene.queryParser.QueryParser.Query(QueryParser.java:1213)
    at org.apache.lucene.queryParser.QueryParser.TopLevelQuery(QueryParser.java:1167)
    at org.apache.lucene.queryParser.QueryParser.parse(QueryParser.java:182)

Il est évident que l'approche est déraisonnable pour des documents volumineux. Ce qui doit être fait pour corriger cela?

BTW, je suis en utilisant FuzzyQuery de correspondance.

OriginalL'auteur Rohit Banga | 2010-03-09