使用Lucene Highlighter的问题

时间:2010-06-08 11:56:09

标签: lucene duplicates lucene-highlighter

我正在使用Lucene Highlighter 2.4.1进行申请。我使用荧光笔来获得最佳匹配片段,然后显示它们。 我调用函数String [] getFragmentsWithHighlightedTerms(Analyzer analyzer,Query query,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是相同的。我不太明白是什么导致了这一点。代码有问题吗?

1 个答案:

答案 0 :(得分:-1)

我没有在我面前的代码,但我认为你正在获得一个数组数组。 所以你需要这样做:

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

或者只从片段数组中获取1项。