Я использую Lucene Highlighter 2.4.1 для своего приложения. Я использую маркер, чтобы выделить наиболее подходящие фрагменты и отобразить их. Я вызываю функцию String [] getFragmentsWithHighlightedTerms (Анализатор анализатора, Запрос запроса, String fieldName, String fieldContents, int fragmentsNumber, int fragmentSize). Например :
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 такие же. Я не совсем понимаю, чем это вызвано. Есть проблема с кодом?