mit hit highlighter in lucene

Ich habe zwei Fragen zu Hit Highlighter mit Apache Lucene:

sehendiese Funktion könnten Sie die Verwendung von Token-Stream-Parameter erklären.

Ich habe mehrere große Lucene-Dokumente, die viele Felder enthalten, und jedes Feld enthält einige Zeichenfolgen. Jetzt habe ich das relevanteste Dokument für eine bestimmte Abfrage gefunden. Dieses Dokument wurde nun gefunden, da möglicherweise mehrere Wörter in der Abfrage mit den Wörtern im Dokument übereinstimmen. Ich möchte herausfinden, welche Wörter in der Abfrage dies verursacht haben. Deshalb habe ich vor, Lucene Hit Highlighter zu verwenden. Beispiel: Wenn die Abfrage "Hautarzt Delhi" lautet und das Dokument mit dem Titel "Dermatologe" die Wörter "Haut" und "Arzt" enthält, sollte es nach dem Hervorheben eines Treffers möglich sein, "Haut" und "Arzt" von der Abfrage zu trennen. Ich habe seit einigen Wochen versucht, den Code dafür zu schreiben. Nicht in der Lage zu bekommen, was ich will. Kannst du mir bitte helfen?

Danke im Voraus.

Aktualisieren:

Aktueller Ansatz: Ich erstelle eine Abfrage, die alle Wörter im Dokument enthält.

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);

Es funktioniert für kleine Dokumente, aber nicht für große Dokumente. Die folgende Stapelverfolgung wird erhalten.

    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)

Es ist offensichtlich, dass der Ansatz für große Dokumente nicht zumutbar ist. Was sollte getan werden, um dies zu korrigieren?

Übrigens verwende ich FuzzyQuery Matching.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage