Проблемы с использованием 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 элемент из массива фрагментов.