Java 类org.apache.lucene.search.highlight.QueryTermScorer 实例源码
项目:miru
文件:LuceneBackedQueryParser.java
@Override
public String highlight(String locale, boolean useStopWords, String query, String content, String pre, String post, int preview) {
Analyzer analyzer = termAnalyzers.findAnalyzer(locale, useStopWords);
QueryParser parser = new QueryParser(defaultField, analyzer);
String summary = null;
try {
SimpleHTMLFormatter formatter = new SimpleHTMLFormatter(pre, post);
Highlighter hg = new Highlighter(formatter, new QueryTermScorer(parser.parse(query)));
hg.setMaxDocCharsToAnalyze(preview);
hg.setTextFragmenter(new SimpleFragmenter(100));
TokenStream tokens = TokenSources.getTokenStream(defaultField, content, analyzer);
summary = hg.getBestFragments(tokens, content, 4, " ... ");
} catch (InvalidTokenOffsetsException | IOException | ParseException ex) {
LOG.error("Failed to highlight", ex);
}
return StringUtils.isBlank(summary) ? null : summary;
}
项目:community-edition-old
文件:AlfrescoSolrHighlighter.java
/**
* Return a {@link org.apache.lucene.search.highlight.Scorer} suitable for this Query and field.
*
* @param query
* The current query
* @param fieldName
* The name of the field
* @param request
* The SolrQueryRequest
*/
private Scorer getQueryScorer(Query query, String requestFieldname, String schemaFieldName, SolrQueryRequest request)
{
boolean reqFieldMatch = request.getParams().getFieldBool(requestFieldname, HighlightParams.FIELD_MATCH, false);
if (reqFieldMatch)
{
return new QueryTermScorer(query, request.getSearcher().getIndexReader(), schemaFieldName);
}
else
{
return new QueryTermScorer(query);
}
}