Проблемы с использованием Lucene Highlighter

Я использую Lucene Highlighter 2.4.1 для своего приложения. Я использую маркер, чтобы получить наиболее подходящие фрагменты и отобразить их. Я делаю вызов функции String[] getFragmentsWithHighlightedTerms(анализатор анализатора, запрос Query, String fieldName, String fieldContents, int fragmentsNumber, int fragSize). Например:

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 одинаковы. Я не совсем понимаю, что является причиной этого. Есть ли проблема с кодом?

1 ответ

Решение

У меня нет кода передо мной, но я думаю, что вы получаете массив массивов. Так что вам нужно сделать это:

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

или просто получить 1 элемент из массива фрагментов.

Другие вопросы по тегам