1

アプリケーションにLuceneHighlighter2.4.1を使用しています。蛍光ペンを使用して、最も一致するフラグメントを取得し、それらを表示します。関数String[]getFragmentsWithHighlightedTerms(アナライザーアナライザー、クエリクエリ、文字列fieldName、文字列fieldContents、intfragmentsNumber、intfragmentSize)を呼び出します。例えば ​​:

String text = doc.get("MetaData");
getFragmentsWithHighlightedTerms(analyzer, query, "MetaData", Text, 5, 100);

関数getFragmentsWithHighlightedTerms()は次のように定義されています

private static String[] getFragmentsWithHighlightedTerms( argument list here)
{
    TokenStream stream = TokenSources.getTokenStream(fieldName, fieldContents, analyzer);
    SpanScorer scorer = new SpanScorer(query, fieldName, new CachingTokenFilter(stream));
    Fragmenter fragmenter = new SimpleSpanFragmenter(scorer, fragmentSize);

    Highlighter highlighter = new Highlighter(scorer);
    highlighter.setTextFragmenter(fragmenter);
    highlighter.setMaxDocCharsToAnalyze(Integer.MAX_VALUE);

    String[] fragments = highlighter.getBestFragments(stream, fieldContents, fragmentNumber);

    return fragments;
}

今私の問題は、highlighter.getBestFragments()メソッドが重複を返していることです。つまり、最初の5つのフラグメントを表示する場合は、いいえ。1と3は同じです。何が原因なのかよくわかりません。コードに問題はありますか?

4

1 に答える 1

-1

目の前にコードはありませんが、配列の配列を取得していると思います。したがって、これを行う必要があります:

item[] = fragments[0]
fragment = item[0]

または、フラグメント配列から 1 つの項目を取得します。

于 2012-01-13T20:31:36.737 に答える