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

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


person mksh15    schedule 08.06.2010    source источник
comment
Действительно ли повторяющийся фрагмент встречается в содержимом поля несколько раз? Можете ли вы опубликовать пример запроса и содержания?   -  person KenE    schedule 09.06.2010
comment
Привет спасибо за ответ Я обнаружил ошибку в создании индекса, которая приводила к дублированию попаданий.   -  person mksh15    schedule 14.06.2010


Ответы (1)


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

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

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

person Ike Turner    schedule 13.01.2012