1

我正在为我的应用程序使用 Lucene Highlighter 2.4.1。我使用荧光笔来获得最匹配的片段,并显示它们。我调用了一个函数 String[] getFragmentsWithHighlightedTerms(Analyzer analyzer, Query query, String fieldName, String fieldContents, int fragmentNumber, 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是一样的。我不太明白是什么原因造成的。代码有问题吗?

4

1 回答 1

-1

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

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

或者只是从片段数组中取出 1 个项目。

于 2012-01-13T20:31:36.737 回答