pom.xml中
其中lucene-highlighter 在contrib中。
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>2.4.1</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-highlighter</artifactId>
<version>2.4.1</version>
</dependency>
其中lucene-highlighter 在contrib中。
@Autowired
private Analyzer analyzer ;
@Autowired
private SimpleHTMLFormatter simpleHTMLFormatter ;
//text 文字标题 或者正文
//keywords 查询关键字
//wordNum 高亮返回段的字数
//返回 匹配的高亮字符串 如果没有的话,返回为空
private String highLight(String text, String keywords, int wordNum){
QueryParser parser = new QueryParser("title",analyzer);
Query query = null;
try {
query = parser.parse(keywords);
} catch (ParseException e1) {
e1.printStackTrace();
}
Highlighter highlighter = new Highlighter(simpleHTMLFormatter, new QueryScorer(query));
//这个wordNum是从text上截取的长度,不包括format中的字符,但是有时返回的不一定正好是wordNum长度?
highlighter.setTextFragmenter(new SimpleFragmenter(wordNum));
String highLightText;
try {
highLightText = highlighter.getBestFragment(this.analyzer, "title", text);
if (highLightText!=null)
return highLightText;
else
return null; //没有关键字匹配的话,返回为空
} catch (IOException e) {
e.printStackTrace();
}
return null;
}