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